猿问

使用@Property与getter和setter

使用@Property与getter和setter

下面是一个特定于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程序,你会使用哪种方法,为什么?


叮当猫咪
浏览 750回答 3
3回答

蝴蝶刀刀

偏好属性..这就是他们在那里的目的。原因是所有属性在Python中都是公共的。以下划线或下划线开头的名称只是一个警告,即给定的属性是一个实现细节,在代码的未来版本中可能不会保持不变。它并不妨碍您实际获得或设置该属性。因此,标准属性访问是一种正常的、毕达克式的访问属性的方式。属性的优点是它们在语法上与属性访问相同,因此您可以在不更改客户端代码的情况下从一个更改到另一个。您甚至可以有一个使用属性的类的版本(例如,用于按合同编写代码或调试)和一个不用于生产的类,而不需要更改使用它的代码。同时,您不必为所有内容编写getter和setter,以防以后需要更好地控制访问。

湖上湖

在Python中,您不会仅仅为了好玩而使用getter或setter或属性。首先只使用属性,然后只在需要的情况下,最终迁移到属性,而不必使用类更改代码。实际上,有许多扩展名为.py的代码使用getter和setter以及继承和无意义的类,例如一个简单的元组就可以做到这一点,但是它是使用Python用C+或Java编写的代码。那不是Python代码。

元芳怎么了

使用属性可以让您从正常的属性访问开始,然后在必要时使用getter和setter支持它们。.
随时随地看视频慕课网APP

相关分类

Python
我要回答