概述
魔术方法:
在Python中,所有以“_ _”双下划线包裹起来的方法,都被统称“Magic Method”魔术方法
1. __new__
对象初始化:
先执行__new__:分配内存空间,并返回构建好的对象(的地址)
在执行__init__:为构建好的对象赋予初始值
#__new__中接收到的*arge和*kwargs会将接收到的参数自动传递给__init__中
2.__del__
从内存中清除对象的时候,对象会默认执行的方法
(1)程序完毕后,释放内存时
(2)执行del指令时
#只有当指向对象的所有变量都被删除的时候,对象空间才会被释放。
3. __call__将对象当作函数执行的时候会被默认调用
class Fight:
def __call__(self, *args, **kwargs):
print("__call__方法被调用了")
f = Fight()
f() # __call__方法被调用了
应用:进行某些固定的不会因为对象改变而发生改变的常规操作
如飞机升空前的例行检查
4.__str__
(1)打印一个对象的时候,默认会被调用
(2)使用str() 对象被强制转化后,输出结果会被调用
# __str__返回值必须为字符串否则会报错
class Dog:
def __init__(self, name):
self.name = name
def __str__(self):
print(super().__str__()) # 通过调用父类对象的str方法,打印原有结果
return f"这是一只名叫{self.name}的狗"
d = Dog("哈哈")
# print(d, id(d)) # <__main__.dog object at> 2306330092040
print(d) # 这是一只名叫哈哈的狗
5.__repr__
# 在可变容器中,对象打印会默认调用__repr__
class Dog:
def __init__(self, name):
self.name = name
def __str__(self):
print("__str__")
return f"这是一只名叫{self.name}的狗"
def __repr__(self):
print("__repr__")
return f'dog:{self.name}'
d = Dog("哈哈")
print(d)
x = [d]
print(x)
# 结果
# __str__
# 这是一只名叫哈哈的狗
# __repr__
# [dog:哈哈]
最后
以上就是甜甜大山为你收集整理的python全栈在线教学_Python全栈+数据分析系统辅导课的全部内容,希望文章能够帮你解决python全栈在线教学_Python全栈+数据分析系统辅导课所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复