。因此,这似乎是一个愚蠢的问题,但我有点困惑。
以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/