我在这里已经阅读了很多有关类方法和实例方法之间区别的文章。我从概念上理解它们,但是现在我试图找出更细微的差别。在下面的示例中,如果我调用User.createUser('xyz')
,userId
会存储在哪里?它会转到下面的(*),即实例上吗?还是好像我插入userId = None
并在其中插入注释# placeholder
并从userId
传入的User.createUser('xyz')
然后将类变量userId
分配给{ {1}}?
'xyz'
答案 0 :(得分:1)
您的类方法createUser返回User对象的新实例。传递给它的参数作为属性存储在此新的User实例上。
答案 1 :(得分:0)
userId
参数存储在__init__
方法中。
对cls(userId)
的呼叫等同于对User(userId)
的呼叫
答案 2 :(得分:0)
就您而言,都不是。 return cls(userId)
返回新对象*,并且userId
被分配给新对象的self
。因此,它既不是类也不是实例变量,它不是另一个对象的实例变量。