gpt4 book ai didi

Python @property 设计

转载 作者:太空狗 更新时间:2023-10-30 00:50:36 24 4
gpt4 key购买 nike

一个关于python @property的设计题,遇到过这两个选项:

选项 1:

class ThisIsMyClass(object):

@property
def ClassAttr(self):
...

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

选项 2:

class ThisIsMyClass(object):

def set_ClassAttr(self, value):
...

def get_ClassAttr(self):
...

myProperty = property(get_ClassAttr, set_ClassAttr)

问题:

我想知道使用这两个选项是否有任何区别?

如果是这样,它如何影响我的代码?

最佳答案

它们完全等价。请参阅文档以亲自查看:

http://docs.python.org/2/library/functions.html#property

在我看来,@ 选项更具可读性(两行连续的代码),更容易重构(grep 用于所有 @ 装饰器并继续),并且更容易记住。它是第二种方法的语法糖,我建议坚持使用它。

如果出于任何原因您需要支持不支持 @ 功能 (2.6) 的 Python 版本,那么您需要坚持使用属性(第二个选项)方法。

关于一个不相关的说明:我建议您保留使用下划线分隔的小写单词命名的成员属性。当然,这是一个偏好问题,但与 Python 风格推荐 (PEP8) 保持一致。这个建议有一些重要的异常(exception),但是,如果你能帮助它,请为类名保留大写字母。

关于Python @property 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19815721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com