繁体   English   中英

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

How do class methods affect instance variables in Python?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

class User():

    # placeholder


    def __init__(self, userId):
        self.userId = userId # (*)

    @classmethod
    def createUser(cls, userId):
        if not isValid(userId): # isValid may or may not be part of the class
            return False
        else:
            return cls(userId)

    # ... other methods
3 个回复

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

userId参数存储在__init__方法中。

cls(userId)的调用等效于对User(userId)的调用

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

3 在类方法中访问Singleton实例变量会引发警告?

我从这里在stackoverflow使用Objective-C单例 。 类方法中的单例访问它的实例变量,该实例变量可以工作,但会引发compli警告。 我应该怎么做? 在每个类方法中,有没有一种方法可以在不访问sharedInstance:情况下执行此操作? 例如,这是我的类方法 ...

4 使用在类方法中作为参数创建的实例变量

抱歉,我想问一些基本的问题,但是我无法弄清楚为什么我无法使用class方法中的参数。 这是我需要帮助的。 API.h APILibrary.m 我遇到的问题是,我不明白为什么会收到“使用未声明的标识符'用户名'错误。我试图将其设置为 同样,但是我无法将其作为参数。 ...

7 类方法上实例变量的范围

我正在尝试使以下代码起作用。 因此,老虎有一个名为“ hunger的变量,它本身就是Tiger类中的Tiger 。 我想这样做,以便可以在整个类方法中更改此变量。 例如,在run将饥饿设置为hunger += 10 ,但是当我运行此代码时,我得到了undefined method ' ...

8 从python中的实例方法访问实例变量

我有一个以上的类定义。 我还在其他地方实例化该类,如下所示: 问题在于如上所述的对GenerateCashFlowDates()的调用,一旦将BondObj分配给带有设置状态的参数的SimpleBond类的实例化。 当我进入调用BondObj.GenerateCashFlows ...

10 测试调用实例变量的类方法-AttributeError

当它们使用实例变量时,如何模拟一个类以隔离地测试其方法? 这是我要测试的代码示例。 我的想法是模拟Employee类,然后调用set_email方法进行测试。 测试代码: 运行测试时,出现以下错误。 AttributeError:模拟对象没有属性“ id” ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM