【发布时间】:2016-01-24 12:48:01
【问题描述】:
我有以下类,它有两个类变量“值”和“梯度”。我将两个值分配给类变量,然后将它们打印出来。但随后我将 20 分配给一个不存在的类变量(“limit”)。但编译器很高兴,似乎存储了变量。这怎么可能? 我的假设是,如果变量名不正确,我应该会看到一条错误消息。我不应该吗?
class wire:
def __init__(self,value,gradient):
self.value = value
self.gradient = gradient
XX = wire(10,0.05)
print XX.value , XX.gradient
XX.limit = 20
print XX.value , XX.gradient, XX.limit
感谢您的帮助
【问题讨论】:
-
您正在分配给 instance 属性,而不是类属性。不,Python 不限制这一点,这是完全正常的行为。
-
这在任何其他 OO 语言中是非法的还是我在做梦?
-
不要将类型模型与编程范式混淆。 C++ 和 Java 可能会使其非法,但其他语言不会。 Python 是一个dynamic language,你在这里考虑的是静态语言。
标签: python class variables variable-assignment