关于python:Python中面向对象初始化方法什么时候被调用怎么设置初始值

35次阅读

共计 1060 个字符,预计需要花费 3 分钟才能阅读完成。

一、在类的内部减少属性 – 存在问题

上一篇中在类的内部给对象减少属性,这种减少属性的办法存在问题。先将案例代码进行调整,察看一下执行后果:

先调用办法再设置属性

AttributeError: ‘Cat’ object has no attribute ‘name’:

属性谬误:Cat 对象没有’name’属性

提醒:在日常生活中,不举荐在类的内部给对象减少属性,如果在运行时没有找到属性,程序会报错,对象蕴含那哪些属性,应该封装在类的外部。

二、初始化办法

2.1 创建对象时主动调用调用初始化办法

在应用类名 () 创建对象时,解释器会主动执行以下操作:

为对象在内存中调配空间 -------》创建对象
为对象的属性设置初始值 -------》初始化办法(init)

这个初始化办法就是__init__办法,__init__是对象的内置办法

在 python 中,__init__办法是专门用来定义一个类具备哪些属性的办法。

在 Cat 中减少__init__办法,验证该办法在创建对象时会被主动调用:

class Cat:

    def __init__(self):
        print("这是一个初始化办法")


# 应用类名 () 创建对象的时候,会主动调用初始化办法 __init__
black = Cat()

执行后果:

2.2 在初始化办法外部定义属性

在__init__办法外部应用 self. 属性名 = 属性的初始值  就能够定义属性。

定义属性之后,再应用 Cat 类创立的对象,都会领有该属性。

class Cat:

    def __init__(self):
        print("这是一个初始化办法")

        # self. 属性名 = 属性的初始值
        self.name = "黑黑"

    def eat(self):
        print("%s 爱吃罐头" % self.name)


# 应用类名 () 创建对象的时候,会主动调用初始化办法 __init__
black = Cat()

print(black.name)
black.eat()

执行后果:

2.3 初始化的同时设置初始值

在开发中,如果心愿在创建对象的同时就设置的对象的属性,能够对__init__办法进行革新

把心愿设置的属性值,定义成__init__办法的参数
在办法外部应用 self. 属性 = 形参  接管内部传递的参数
在创建对象时,应用类名 (属性 1,属性 2...) 调用

下面代码中,如果你在创立一个对象,并调用 eat(),仍旧是黑黑爱吃罐头,这样 name 属性就被固定死了,就不能很灵便的被使用,所以要进行革新。

革新后代码如图:给办法加个形参

更多相干 Python 面向对象知识点可关注python 自学网 www.wakey.com.cn

正文完
 0