1. __doc__
表示类的描述信息
class Test(object):
"""描述类信息,这是一个测试类"""
def fun(self):
pass
print(Test.__doc__) # 输出:描述类信息,这是一个测试类
2. __module__和 __class__
module 表示当前操作的对象在哪个模块
class 表示当前操作的对象的类是什么
class Person(object):
def __init__(self):
self.name = "xiaoli"
p = Person()
print(p.__module__) # __main__
print(p.__class__) # <class '__main__.Person'>
3. __init__
初始化方法,通过类创建对象时,自动触发执行
class Person2(object):
def __init__(self, name):
self.name = name
self.age = 19
pp = Person2("xiaobai") # 自动执行类中的__init__方法
4. __del__
当对象在内存中被释放时,自动执行
注:此方法一般无需定义,del的调用是由解释器在进行垃圾回收时自动触发执行的
class Foo(object):
def __del__(self):
pass
f = Foo()
4. __call__
对象后面加括号,触发执行
init方法的执行是由创建对象触发的,即 对象=类名();
而对于call方法的执行是由对象后加括号触发的,即 对象() 或 类()()
class Foo2(object):
def __init__(self):
print("__init__")
def __call__(self, *args, **kwargs):
print("__call__")
ff = Foo2() # 执行__init__
ff() # 执行__call__
5. __dict__
类或对象中的所有属性
类的实例属性属于对象;类中的类属性和方法等属于类
class Province(object):
country = "China"
def __init__(self, name, count):
self.name = name
self.count = count
def func(self, *args, **kwargs):
print("func")
# 获取类的属性,即 类属性、方法
print(Province.__dict__)
# 输出:{'__module__': '__main__', 'country': 'China', '__init__': <function Province.__init__ at 0x1033c9950>, 'func': <function Province.func at 0x1033c99d8>, '__dict__': <attribute '__dict__' of 'Province' objects>, '__weakref__': <attribute '__weakref__' of 'Province' objects>, '__doc__': None}
obj1 = Province("山东", 10000)
# 获取对象obj1的属性
print(obj1.__dict__) # {'name': '山东', 'count': 10000}
6. __str__
如果一个类中定义了str方法,那么在打印对象时,默认输出该方法的返回值
class Test2(object):
def __str__(self):
return "str"
t = Test2()
print(t) # str
7. __getitem__、__setitem__、__delitem__
用于索引操作,如字典。以上分别表示,获取、设置、删除数据
class Test3(object):
def __getitem__(self, item):
print("getitem", item)
def __setitem__(self, key, value):
print("setitem key = ", key, " value = ", value)
def __delitem__(self, key):
print("delitem", key)
t = Test3()
result = t["k1"] # 自动触发执行__getitem__
t["k2"] = "xiaolan" # 自动触发执行__setitem__
del t["k1"] # 自动触发执行__delitem__