Python 中有一类方法,以两个下划线开头,两个下划线结尾,并且在满足某个条件的情况下,会自动调用,这类方法称为,魔法方法。
__init__ 方法
创建对象之后会自动调用
用法:
给对象添加属性的,(初始化方法,构造方法)
某些代码,在每次创建对象之后,都要执行,就可以将这行代码写在__init__方法
注意事项:
不要写错
""""
猫类,属性 name,age,show_info(输出属性信息)
"""
class cat:
# 定义添加属性的方法
def __init__(self,name,age):
self.name = name # 给对象添加 name 属性
self.age = age # 给对象添加 get 属性
# 输出属性信息
def show_info(self):
print(f'小猫的名字是:{self.name},年龄是:{self.age}')
# 创建对象,不要在自己类的缩进中
b_cat = cat('蓝猫', 2) # 创建对象,会输出
blue = b_cat
blue.show_info()
black_cat = cat('黑猫',3)
black_cat.show_info()
__str__方法
使用print(对象)打印对象的时候,会自动调用
在这个方法中一般书写对象的属性信息的,即打印对象的时候想要查看什么信息,在这个方法中进行定义的。如果类中没有定义__str__方法,print(对象),默认输出对象的引用地址
注意事项:这个方法必须返回一个字符串
class cat:
# 定义添加属性的方法
def __init__(self, name, age):
self.name = name # 给对象添加 name 属性
self.age = age # 给对象添加 get 属性
def __str__(self):
return f'小猫的名字是:{self.name}, 年龄是:{self.age}'
# 创建对象,不要在自己类的缩进中
b_cat = cat('蓝猫', 2)
print(b_cat)
black_cat = cat('黑猫', 3)
print(black_cat)
__del__方法(了解)
__init__方法,创建对象之后,会自动调用(构造方法)
__del__方法,对象被删除销毁时,自动调用的(emmm heritage)(析构方法)
调用场景,程序代码运行结束,所有对象都被销毁
调用场景,直接使用del删除对象(如果对象有多个名字,多个对象引用一个对象,需要把所有对象都删除)
class Demo:
def __init__(self, name):
print('我是 __init__,我被调用了')
self.name = name
def __del__(self):
print(f'{self.name} 没了,给它处理')
# Demo('A')
a = Demo('a')
b = Demo('b')
del a
print('代码运行结束')