Python 在类中自动重新定义全局变量

Python 在类中自动重新定义全局变量,python,python-2.7,class,variables,Python,Python 2.7,Class,Variables,我想要这样的东西: >>> x = 0 >>> c = SomeClass(x) >>> c.x 0 >>> x = 1 >>> c.x 1 或 我想这不是一种常规的方式,我知道你可以只做def更新(self,x):self.x=x或c.x=x,但这不是我想要的方式,我只是想知道是否有一种方式可以实现这一点。你可以使用一个属性: class SomeClass(object): @propert

我想要这样的东西:

>>> x = 0
>>> c = SomeClass(x)
>>> c.x
0
>>> x = 1
>>> c.x
1


我想这不是一种常规的方式,我知道你可以只做
def更新(self,x):self.x=x
c.x=x
,但这不是我想要的方式,我只是想知道是否有一种方式可以实现这一点。

你可以使用一个属性:

class SomeClass(object):

    @property
    def x(self):
        return x

重写某个类中的getattributesetattr(self,attr,value)函数,以获取并设置其中的x值。

c.x=1有什么问题吗?@TigerhawkT3,没什么,正如我在上面写的,我只是想知道是否有办法获取它。如果没有理由避免正确的语法和样式,请不要。你只会把事情搞得一团糟,没有任何用处,也没有人会理解你的代码(包括你自己,几周后)。@TigerhawkT3当然,这只是个愚蠢的问题,我把它标记了出来,答案是ty\critic btw该函数没有
x
本地,因此会产生
NameError
。它也与全局变量到类或实例变量的转换无关。@TigerhawkT3,这取决于
x
的定义位置。如果它在文件中定义为类,它将工作。如果没有,则必须修改
返回
行。如果有人使用全局变量,那么很有可能所有内容都在一个文件中。我明白了。但是,它仍然指向全局变量,它只需要
x=1
x
@TigerhawkT3的引用,我告诉过他怎么做,你告诉他这可能不聪明。所以他得到了所有的信息来做决定。
class SomeClass(object):

    @property
    def x(self):
        return x