0
点赞
收藏
分享

微信扫一扫

python第九节:类的使用(2)

类的__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

旺财

None

举报

相关推荐

0 条评论