当我们在Python中的类中给出函数定义时会发生什么

时间:2018-03-24 15:12:22

标签: python function class

我出于兴趣自己学习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。

任何人都可以帮忙解释一下吗? 看来这三个案件在某种程度上与我不同......

1 个答案:

答案 0 :(得分:2)

对于objB,您需要先调用该函数,然后获取x的值。所以你的代码来自

print(objB.my_initialize())

objB.my_initialize()
print(objB.x)

这是因为objB.my_initialize()仅设置x的值,并且不会返回任何内容,因此您获得None的原因。