面向对象编程:getter/setter 方法
我看到有人说,访问对象的属性应该通过一些特定的方法,比如 object.get_this()
或者 object.set_that(value)
。那么,这种写法适用于类里面定义的方法吗?还是说这些方法只适合用在对象实例上?比如说,像这样用 get_value()
来获取对象实例的 value
,这样做算不算规范?或者说 get_value()
也应该在类的方法里使用呢?
class test:
def __init__(self,value):
self.value = value
def get_value(self):
return self.value
def method(self):
return some_operation(self.value)
class test:
def __init__(self,value):
self.value = value
def get_value(self):
return self.value
def method(self):
return some_operation(self.get_value())
2 个回答
2
我觉得在一个对象的方法里,不应该用和其他对象的方法不同的方式来访问这个对象的属性。为什么呢?我也说不清楚,就是觉得这样很奇怪。
在Python中,如果你使用属性装饰器,这会让事情变得简单很多,这样就不需要像“get_foo”或“set_foo”这样的获取和设置方法了。
48
在Python中,不要使用 getter/setter 方法。与其这样,不如直接访问属性本身。如果你需要在每次访问或设置属性时都运行一些代码,可以使用属性(properties)。