共计 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
正文完