Python3基础-doc、module、class、del、call
__doc__ :返回所属类的文档字符串
class People: """ 我是描述信息""" def __init__(self,name,age): self.name =name self.age = age print(People.__doc__) """ 执行结果如下: 我是描述信息 """
#__doc__ 仅对当前类实例起作用,对继承的子类是不起作用的
class People: """ 我是描述信息""" def __init__(self,name,age): self.name =name self.age = age class Student(People): pass print(People.__doc__) print(Student.__doc__) #该属性无法继承给子类
以上代码执行结果如下:
我是描述信息
None
__module__: 表示当前操作的对象在哪个模块
__class__: 表示当前操作的对象的类是什么
class People: """ 我是描述信息""" def __init__(self,name,age): self.name =name self.age = age self.height = 89
from lib.aa import People p1 = People('susu',18) print(p1.name) print(p1.__module__) print(p1.__class__) """ 执行结果如下: susu lib.aa <class 'lib.aa.People'> """
__del__ 析构方法,当对象在内存中被释放时,自动触发执行
class People: """ 我是描述信息""" def __init__(self,name,age): self.name =name self.age = age def __del__(self): print('执行析构函数') p1 = People('su',58) del p1 print('====================') """ 执行结果: 执行析构函数 ==================== """
class People: """ 我是描述信息""" def __init__(self,name,age): self.name =name self.age = age def __del__(self): print('执行析构函数') p1 = People('su',58) #del p1 print('====================') """ 执行结果: ==================== 执行析构函数 """
__call__ 对象后面加括号,触发执行
注意:构造方法的执行是由创建对象触发的。即 对象 = 类名();而对于 __call__方法的执行是由对象后加括号触发的。即 对象()或类()()
class People: """ 我是描述信息""" def __init__(self,name,age): self.name =name self.age = age p1 = People('小苏',100) # p1() TypeError: 'People' object is not callable
class People: """ 我是描述信息""" def __init__(self,name,age): self.name =name self.age = age def __call__(self, *args, **kwargs): print('__call__') p1 = People('小苏',100) p1() """ 执行结果如下: __call__ """
class People: """ 我是描述信息""" def __init__(self,name,age): self.name =name self.age = age def __call__(self, *args, **kwargs): print('__call__') p1 = People('小苏',100) p1() #People下的__call__ People('小苏',100)() """ 执行结果如下: __call__ __call__ """