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

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐