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
lib/aa.py
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'>
"""
index.py

__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__
"""

 

 

 

 

 

posted @ 2019-11-21 16:22  槑槑DE  阅读(253)  评论(0编辑  收藏  举报