。因此,这似乎是一个愚蠢的问题,但我有点困惑。
以php为例:

class MyClass
{
   private $myMember;

   public function __construct($myMember = null)
   {
       $this->myMember = $myMember;
   }

   public function setMyMember($myMember)
   {
       $this->myMember = $myMember;
   }

   public function getMyMember()
   {
       return $this->myMember;
   }

}

。只有一个私有成员和一个getter和setter的类。

?? )
??
最后,如果我的混淆是正确的,那么上面的示例将如何用python编码?

最佳答案

Generally, you don't use getters and setters in Python; unless you need to transform the value, need side-effects during setting or getting, or need to prevent either getting or setting, you just use attributes instead:

class MyClass(object):
    def __init__(self, member):
        self.member = member

。。
从技术上讲,self方法确实不是构造函数。MyClass.member调用时,存在“cc>”。相反,它是一个初始值设定项,您可以用它设置第一个值。。!
For those cases where you do have a need to create setters and getters, use the self.member static method:
class MyClass(object):
    def __init__(self, member):
        self._member = member

    @property
    def member(self):
        return 'Hello {}!'.format(self._member)

    @member.setter
    def member(self, value):
        # Remove "Hello " and "!" from the start and end of any value being set.
        if value.startswith('Hello '):
            value = value.split(None, 1)[1]
        self._member = value.rstrip('!')

演示:
>>> m = MyClass('World')
>>> m.member
'Hello World!'
>>> m.member = 'Hello Planet Earth!'
>>> m.member
'Hello Planet Earth!'
>>> m._member
'Planet Earth'

关于php - Python类成员的困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16750925/

10-12 12:46
查看更多