Python:类属性与Getter和Setter?

alp*_*ric 0 python oop class attr

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

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

whe*_*ies 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
Run Code Online (Sandbox Code Playgroud)

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

   foo = Foo(-4)
   foo.x
   >>> -4
   foo.x = 3
   foo.x
   >>> -4
   foo.x = -12
   foo.x
   >>> -12
Run Code Online (Sandbox Code Playgroud)