我出于兴趣自己学习python,但是当我进入" class"时,我面临很多问题。
在这篇文章中: What happens when you initialise instance variables outside of __init__
Dietrich Epp的回答详细解释了课堂上究竟发生了什么。 迪特里希说,编辑中的三个案例都是一样的。
但是,当我在命令行中输入以下内容时:
# Set inside __init__
class MyClassA:
def __init__(self):
self.x = 0
objA = MyClassA()
# Set inside other method
class MyClassB:
def my_initialize(self):
self.x = 0
objB = MyClassB()
objB.my_initialize()
# Set from outside any method, no self
class MyClassC:
pass
objC = MyClassC()
objC.x = 0
print(objA.x)
print(objB.my_initialize())
print(objC.x)
事实证明,打印结果的中间是“没有”。这意味着objB.my_initialize()不会给出0,而是返回0。
任何人都可以帮忙解释一下吗? 看来这三个案件在某种程度上与我不同......
答案 0 :(得分:2)
对于objB
,您需要先调用该函数,然后获取x
的值。所以你的代码来自
print(objB.my_initialize())
到
objB.my_initialize()
print(objB.x)
这是因为objB.my_initialize()
仅设置x
的值,并且不会返回任何内容,因此您获得None
的原因。