本文主要是介绍python第九节:类的使用(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
类的__init__()方法
每个类都有一个特殊的方法,__init__() ,可通过其控制初始化对象。
每当类实例化时,python会自动执行。
init方法的名称前后各有两个下划线,这是python语言的一种约定,避免与普通方法产生冲突,称为“魔法函数”。方法__init__()定义时,形参self必不可少,还必须位于其他形参的前面,self代表类的当前实例。它是一个指向实例本身的引用,让实例能够访问类中的属性和方法,self之后的参数个数依实际需要而定。
例子1:
class Dog():pet_shop = '萌宠小屋'def __init__(self, name, age):self.name = nameself.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 = nameself.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 = nameself.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
这篇关于python第九节:类的使用(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!