2016-01-09 41 views
-4

我想这样的事情:自动重新定义在类中的全局变量

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

或者

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

我想这不是一个convencional办法做到这一点,我知道你可以只让def update(self,x): self.x = xc.x = x但这不是我想要的方式,我只想知道是否有办法实现这一点。在SomeClass的

class SomeClass(object): 

    @property 
    def x(self): 
     return x 
+0

'c.x = 1'有什么问题? – TigerhawkT3

+0

@ TigerhawkT3,没什么,因为我写了那里我只是想知道,如果有一种方法来获得。 – llpinokio

+0

如果您没有理由避免恰当的语法和风格,请不要。你只会弄得一团糟,没有任何有用的目的,没有人会理解你的代码(包括你自己,从现在开始的几个星期)。 – TigerhawkT3

回答

-1

您可以使用属性。

+0

该函数没有'x'局部,所以这将产生一个'NameError'。它也与将全局变量转换为类或实例变量无关。 – TigerhawkT3

+0

@ TigerhawkT3这取决于'x'的定义。如果它在文件中定义为它将工作的类。它不是,'return'行必须被修改。如果有人使用全局变量,那么一切都在一个文件中的机会非常高。 –

+0

我明白了。但是,它仍然只是指向全局变量,它不需要任何超过“x = 1”和对“x”的引用。 – TigerhawkT3

-1

覆盖的的getAttributeSETATTR(个体经营,ATTR,value)函数,来获取和在其设置的x值: