面向对象编程(OOP):getter/setter方法

23

我已经阅读到应该通过 getter/setter 方法来访问对象属性,比如 object.get_this()object.set_that(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)

在一个对象实例中,如果已经定义了用于访问 value get_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.get_value())

4
请查看内置函数 property 的文档:http://docs.python.org/library/functions.html#property。 - eumiro
3
我不知道你在哪里读到这个,但我打赌它肯定不是在任何Python的上下文中。在Python中,相反的情况则成立。 - Daniel Roseman
2个回答

48

19
做这件事情的另一个原因是:Python不是Java。 - Tadeck

2

我不会以与期望其他对象的方法访问属性的方式不同的方式在对象的方法中访问属性。为什么?我不确定,这似乎非常奇怪。

如果使用 属性装饰器,Python可以轻松实现此功能,无需使用类似于“get_foo” / “set_foo”之类的getter/setter。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接