Pytho中下划线_、__的区别、常见魔法函数详解
单下划线 _method_name
Python中没有真正的private方法,规定类中_开头的为私有属性或方法,则外部不应该调用:
Class A():def __init__(self):self._x = 1a = A()
print(self._x)
上方代码输出为 1
这个属性/方法是能被调用的,但出于某种约定,我们是一般不去调用的。
双下划线 __method_name
__开头的为私有属性/方法,只能self访问,且__开头的不能被子类重写:
Class A():def __init__(self):self.__x = 1a = A()
print(self.__x)
上方代码输出为 ‘A’ object has no attribute ‘__x’
前后双下划线 method_name
为Python的魔法函数,一般是系统定义名字,类似于__init__(),一般是给Python调用的。
常见魔法函数:
-
字符串表示:
__str__、__repr____str__(): 返回打印该对象时的结果字符串
-
迭代相关:
__iter__、__next____iter__(): 返回一个迭代器,一个类只要实现了__iter__方法,就是可迭代对象,for循环自动调用__iter__来获取一个迭代器__next__(): 自定义一个类,只要实现了__next__方法,就是迭代器
-
可调用:
__call__ -
集合、序列相关:
__len__、__getitem__、__setitem__、__delitem__、__contains__ -
属性相关:
__getattr__、__setattr__、__getattribute__ -
with上下文管理器:
__enter__、__exit__
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
