类的__init__()方法
每个类都有一个特殊的方法,__init__() ,可通过其控制初始化对象。
每当类实例化时,python会自动执行。
init方法的名称前后各有两个下划线,这是python语言的一种约定,避免与普通方法产生冲突,称为“魔法函数”。方法__init__()定义时,形参self必不可少,还必须位于其他形参的前面,self代表类的当前实例。它是一个指向实例本身的引用,让实例能够访问类中的属性和方法,self之后的参数个数依实际需要而定。
例子1:
class Dog():
pet_shop = '萌宠小屋'
def __init__(self, name, age):
self.name = name
self.age = age
# 坐
def sit(self):
print(self.name.title() + " is now sitting.")
# 打滚
def roll_over(self):
print(self.name.title() + " rolled over!")
此处引出python中下划线在定义函数时的作用。
1 方法名称前后双下划线代表方法是python的内置函数。但是可以自己定义首尾双下划线的方法,像使用普通方法一样使用,但是不建议这样做。
2 双下划线开头的方法,是私有方法在类的外面不能访问。
例子1:
class Dog():
pet_shop = '萌宠小屋'
def __init__(self, name, age):
self.name = name
self.age = age
# 坐
def sit(self):
print(self.name.title() + " is now sitting.")
# 打滚
def roll_over(self):
print(self.name.title() + " rolled over!")
def __say_hi(self):
print("say hi!")
# 类的实例化
dog = Dog('旺财','2')
# 双下划线开头的方法是私有化方法,不能在类的外部调用
print(dog.__say_hi())
# 类直接调用类的方法,但是注意传入对象实例
print(dog.roll_over())
结果:
Traceback (most recent call last):
File "D:\pythonProject\test\test20240117.py", line 22, in <module>
print(dog.__say_hi())
^^^^^^^^^^^^
AttributeError: 'Dog' object has no attribute '__say_hi'
例子2:
class Dog():
pet_shop = '萌宠小屋'
def __init__(self, name, age):
self.name = name
self.age = age
# 坐
def sit(self):
print(self.name.title() + " is now sitting.")
# 打滚
def roll_over(self):
print(self.name.title() + " rolled over!")
def __say_hi__(self):
print("say hi!")
# 类的实例化
dog = Dog('旺财','2')
# 双下划线开头的方法是私有化方法,不能在类的外部调用
print(dog.__say_hi__())
# 类直接调用类的方法,但是注意传入对象实例
print(dog.roll_over())
结果:
say hi!
None
旺财 rolled over!
None