Python 语法基础 魔法方法 魔法属性
·
文章目录
1__doc__ 魔法属性
描述信息,必须紧跟类名或方法名的第一行,不能有空格,只能用三引号
class Person:
"""这是类的介绍"""
def funa(self) :
"""这是方法的介绍"""
pass
print(Person.__doc__)#这是类的介绍
p=Person()
print(p.funa.__doc__)#这是方法的介绍
2__modle__和__class__魔法属性
显示模块(.py)名和类名
__modle__可以用类名调用
__class__只能用对象,用类名.__class__结果永远是type
class B:
def funa(self) :
print("fun")
b = B()
print(b.__module__)#__main__ 当前运行的模块会显示main,否则显示.py文件的名字
print(b.__class__)#<class '__main__.B'>
3__str()__魔法方法
打印一个对象是,默认打印内存地址,如果有这个方法,将默认打印这个方法的返回值
返回值必须是字符串
class A:
def __str__(self):
return "A的str方法的返回值"
a = A()
print(a)#A的str方法的返回值
4__del()__魔法方法
析构函数
class Human:
def __del__(self):
print("析构执行11")
man= Human()
del man #析构执行11
5__call()__魔法方法
把一个不可调用对象转换为可调用对象
例如下方A的对象a,正常情况a()会报错,但是有了__call__,当写a()时,会调用call里的内容
class A:
def __call__(self, *args, **kwargs):
print("a被调用")
a= A()
a()#输出 a被调用
print(callable(a))#True callable()用来监测是不是一个可调用对象
6__dict()__魔法方法
对于对象 返回实例属性的字典,不包含方法,和类属性
class Person:
species = "人类" # 类属性
def __init__(self, name, age):
self.name = name
self.age = age
def funa(self) :
pass
p = Person("张三", 18)
print(p.__dict__)#返回{'name': '张三', 'age': 18}
对于类 返回类属性 方法的名字和参数 不包含实例属性
class Person:
species = "人类" # 类属性
def __init__(self, name, age):
self.name = name
self.age = age
def funa(self) :
pass
print(Person.__dict__)#{'__module__': '__main__', 'species': '人类', '__init__': <function Person.__init__ at 0x00000000011749A0>, 'funa': <function Person.funa at 0x0000000001175760>, '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>, '__doc__': None}
更多推荐

所有评论(0)