【发布时间】:2018-01-24 01:28:32
【问题描述】:
在 Python 中,我定义了一个类:
class X():
_CON = 0
def __init__(self, var):
self.y = var*self._CON
是否可以为X 的实例更改常量_CON?例如,我尝试执行以下操作
X._CON = 3
x = X(2)
a = x.y
我希望 _CON 从 0 更改为 3,因此 self.y = var*_CON = 2*3 = 6。除了创建一个新类之外,正确的方法是什么?
编辑:
我找到了答案。我的第二个代码有效。但是,它改变的不是x 类X 的实例_CON,而是X 类本身的X。以下代码更改实例x 的_CON 而不是类X 的更改。
x = X(2)
x._CON = 3
x.__init__(2)
【问题讨论】:
-
你能澄清你的问题吗?你的预期结果是什么?你认为
a的值是多少? -
如果我按原样执行您的示例,则会收到异常
NameError: global name '_CON' is not defined。您需要将其更改为self.y = var * X._CON或self.y = var * self._CON,如下@Mateen Ulhaq 所述。 -
恕我直言,如果您使用minimum complete verifiable example 改进您的问题,您将获得更好的答案
-
@MarkMikofski:我已经编辑了我的问题。现在是不是更清楚了?
-
是的,它更清晰,但您的示例代码甚至没有运行。你试过了吗?您的问题的答案是肯定的,但您必须更改您的代码示例,如我的 cmets 和下面的投票答案中所示
标签: python class class-constants