Python:类属性与Getter和Setter?

时间:2014-02-14 20:48:49

标签: python class oop attr

在使用Python类时,很多时候很可能使用getMyAttr()setMyAtt()方法获得相同的功能,而不是声明类属性/变量,例如self.myVariable < / p>

我使用OOP越多,我越倾向于使用类方法来获取和设置属性。 我想知道我正在采取的方向是否正确,如果我以后不会抱歉10K行代码。请指教!

1 个答案:

答案 0 :(得分:5)

你正在思考正确的方向,但你应该看看Python properties做你正在做的事情:

 class Foo():
   def __init__(self, x):
     self.__x = x

   @property
   def x(self):
     return self.__x

   @x.setter
   def set_x(self, value):
     if(value < 0):
       self.__x = value

其中你可以嵌套“set”逻辑和“get”逻辑(如果你正在改变如何呈现它。)这使得从类中调用值x感觉就像你正在访问属性。

   foo = Foo(-4)
   foo.x
   >>> -4
   foo.x = 3
   foo.x
   >>> -4
   foo.x = -12
   foo.x
   >>> -12