使用Classes的许多优点之一是不需要不断更新从外部函数返回的变量值(在Class定义之外声明的函数)。这是一个例子:
class MyClass(object):
def __init__(self, arg):
super(MyClass, self).__init__()
self.name = arg
def setName(self, arg):
self.name = arg
def getName(self):
return self.name
def instanceModifier(instObject):
instObject.setName('Some Value')
myInst=MyClass('My Name')
print myInst.getName()
instanceModifier(myInst)
print myInst.getName()
instanceModifier()
函数修改了Instance的self.name
变量的内容。我们不必确保更新Instance变量,因为不需要它。但我仍然想知道这是否是一个好习惯。我应该从instanceModifier()
函数返回修改后的实例对象,并将返回的实例分配回实例对象,如下面的代码所示。如果不是那么为什么不呢?如果是,为什么是的?
class MyClass(object):
def __init__(self, arg):
super(MyClass, self).__init__()
self.name = arg
def setName(self, arg):
self.name = arg
def getName(self):
return self.name
def instanceModifier(instObject):
instObject.setName('Some Value')
return instObject
myInst=MyClass('My Name')
print myInst.getName()
myInst=instanceModifier(myInst)
print myInst.getName()
答案 0 :(得分:1)
IMO最直接访问myInst.name
是Pythonic。
myInst=MyClass('My Name')
print myInst.name
myInst.name = 'Some Value'
print myInst.name
除非有某种副作用或延迟查找,否则不需要使用setter / getter,即便如此,最好使用@property
完成。