上文介绍了Python的类成员以及成员修饰符,从而了解到类中有字段、方法和属性三大类成员,并且成员名前如果有两个下划线,则表示该成员是私有成员,私有成员只能由类内部调用。无论人或事物往往都有不按套路出牌的情况,Python的类成员也是如此,存在着一些具有特殊含义的成员,详情如下:
1. __doc__
表示类的描述信息
classFoo:"""描述类信息,这是用于看片的神奇"""
deffunc(self):pass
print Foo.__doc__
#输出:类的描述信息
2.. __init__
构造方法,通过类创建对象时,自动触发执行。
classFoo:def __init__(self, name):
self.name=name
self.age= 18obj= Foo('wupeiqi') #自动执行类中的 __init__ 方法
3. __call__
对象后面加括号,触发执行。
注:构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()
classFoo:def __init__(self):pass
def __call__(self, *args, **kwargs):print '__call__'obj= Foo() #执行 __init__
obj() #执行 __call__
4. __dict__
类或对象中的所有成员
上文中我们知道:类的普通字段属于对象;类中的静态字段和方法等属于类,即:
classProvince:
country= 'China'
def __init__(self, name, count):
self.name=name
self.count=countdef func(self, *args, **kwargs):print 'func'
#获取类的成员,即:静态字段、方法、
print Province.__dict__
#输出:{'country': 'China', '__module__': '__main__', 'func': , '__init__': , '__doc__': None}
obj1= Province('HeBei',10000)print obj1.__dict__
#获取 对象obj1 的成员#输出:{'count': 10000, 'name': 'HeBei'}
obj2= Province('HeNan', 3888)print obj2.__dict__
#获取 对象obj1 的成员#输出:{'count': 3888, 'name': 'HeNan'}
print obj2.__dict__['name']
# 输出:HeNan
5. __str__
如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值。
classFoo:def __str__(self):return 'wupeiqi'obj=Foo()printobj#输出:wupeiqi