类方法如何影响Python中的实例变量?

时间:2018-10-12 14:27:39

标签: python class

我在这里已经阅读了很多有关类方法和实例方法之间区别的文章。我从概念上理解它们,但是现在我试图找出更细微的差别。在下面的示例中,如果我调用User.createUser('xyz')userId会存储在哪里?它会转到下面的(*),即实例上吗?还是好像我插入userId = None并在其中插入注释# placeholder并从userId传入的User.createUser('xyz')然后将类变量userId分配给{ {1}}?

'xyz'

3 个答案:

答案 0 :(得分:1)

您的类方法createUser返回User对象的新实例。传递给它的参数作为属性存储在此新的User实例上。

答案 1 :(得分:0)

userId参数存储在__init__方法中。

cls(userId)的呼叫等同于对User(userId)的呼叫

答案 2 :(得分:0)

就您而言,都不是。 return cls(userId)返回对象*,并且userId被分配给对象的self。因此,它既不是类也不是实例变量,它不是另一个对象的实例变量。