使用@property与getter和setter

2024-04-20 11:41:21 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是一个纯Python特定的设计问题:

class MyClass(object):
    ...
    def get_my_attr(self):
        ...

    def set_my_attr(self, value):
        ...

以及

class MyClass(object):
    ...        
    @property
    def my_attr(self):
        ...

    @my_attr.setter
    def my_attr(self, value):
        ...

Python让我们以任何一种方式来做。如果你要设计一个Python程序,你会使用什么方法,为什么?


Tags: 方法self程序getobjectvaluemydef
3条回答

在Python中,并不是为了好玩才使用getter、setter或属性。首先只使用属性,然后,仅在需要时,才最终迁移到属性,而不必使用类更改代码。

<> P.Ex>确实有很多代码。Py使用GETSter和SETTER和继承和无意义类,例如C++中的简单元组,但是它是用Python编写C++或java的人编写的代码。

这不是Python代码。

使用属性,您可以从正常的属性访问开始,然后back them up with getters and setters afterwards as necessary

首选属性。这就是他们在那里的目的。

原因是所有属性在Python中都是公共的。以下划线或两个下划线开头的名称只是一个警告,说明给定属性是一个实现细节,在将来的代码版本中可能不会保持不变。它并不能阻止您实际获取或设置该属性。因此,标准属性访问是访问属性的正常、Pythonic方式。

属性的优点是它们在语法上与属性访问相同,因此您可以在不更改客户机代码的情况下从一个属性更改到另一个属性。您甚至可以有一个使用属性的类版本(例如,对于按合约或调试的代码)和一个不用于生产的类版本,而不更改使用它的代码。同时,您不必为所有内容编写getter和setter,以防以后可能需要更好地控制访问。

相关问题 更多 >