关于11.3.2:__init__的一点疑问
情景一:class Turtle:
def __init__(self):
self.power = 100
这时候去IDLE中执行:
a = Turtle()
a.power
会输出100,但是a.power()却报错
想问一下__init__究竟是怎么用的
情景二:
class Turtle:
def energy(self):
self.power = 100
这时候去IDLE中执行:
a=Turtle()
a.energy()此时却什么都不会输出
想问一下为什么不会输出100呢 __init__ 是用于初始化,并且定义类里面的元素。
你的 power 是类里面的元素,不是函数,也不是类,为什么要括号? 【情景1】
a . power # 代表引用的是对象 a 的属性,也就是一个数值(100)
a . power() # 代表调用对象 a 的方法,也就是函数,可是,你并没有为这个对象所属的类定义这个方法。
【情景2】:
a . power # 这样才能引用到对象 a 的 power 属性值 100 jackz007 发表于 2021-10-31 12:12
【情景1】
【情景2】:
情景二的情况调用a.power在IDLE中会报错,是哪里出错了呢 傻眼貓咪 发表于 2021-10-31 10:25
__init__ 是用于初始化,并且定义类里面的元素。
你的 power 是类里面的元素,不是函数,也不是类,为什么 ...
小甲鱼对于__init__讲的好像不是很 细,我不太清楚__init__究竟是干嘛用的 W1ND123 发表于 2021-10-31 14:33
小甲鱼对于__init__讲的好像不是很 细,我不太清楚__init__究竟是干嘛用的
如我所说,初始化类里面的元素,比如:class 学生:
def __init__(self):
self.身高 = 175
self.体重 = 70
self.数学成绩 = 87以上用中文写代码纯属范例,只是要让你明白 __init__() 作用 本帖最后由 jackz007 于 2021-10-31 15:05 编辑
W1ND123 发表于 2021-10-31 14:32
情景二的情况调用a.power在IDLE中会报错,是哪里出错了呢
【情景1】:Turtle 类带有 __init__() 方法,所以,在定义对象 a 的时候,a . power 会自动被初始化为 100
>>> class Turtle:
def __init__(self):
self.power = 100
>>> a = Turtle()
>>> a . power
100
【情景2】:Turtle 类没有带 __init__() 方法,所以,在定义对象 a 的时候,power 属性还不存在,所以,必须要执行一次 a . energy() ,属性 power 才会被添加进来,这个时候,才可以访问 a . power 属性。
>>> class Turtle:
def energy(self):
self . power = 100
>>> a = Turtle()
>>> a . energy()
>>> a . power
100 综合上面两位大神的指导,对__init__方法有了新的理解!感谢两位大神 jackz007 发表于 2021-10-31 15:00
【情景1】:Turtle 类带有 __init__() 方法,所以,在定义对象 a 的时候,a . power 会自动被初始化为...
综合上面两位大神的指导,对__init__方法有了新的理解!感谢两位大神 W1ND123 发表于 2021-10-31 15:55
综合上面两位大神的指导,对__init__方法有了新的理解!感谢两位大神
如果问题已经解决,你应该选择 "最佳答案"。
页:
[1]