【问题标题】:Use of properties in python like in example C#在 python 中使用属性,如示例 C#
【发布时间】:2011-03-20 11:45:00
【问题描述】:

我目前使用 Python 已经有一段时间了,我开始质疑自己是否应该像在 C# 中一样经常在 Python 中使用“属性”。 在 C# 中,我主要为我的大多数类创建属性。

似乎属性在python中并不那么流行,我错了吗? 如何在 Python 中使用属性?

问候,

【问题讨论】:

    标签: c# python properties


    【解决方案1】:

    如果您所做的只是设置和查询成员变量,则通常不需要属性。因为 Python 没有封装的概念,所以所有的成员变量都是公共的,通常不需要封装访问。但是,属性是可能的、完全合法且受欢迎的:

    class C(object):
        def __init__(self):
            self._x = 0
    
        @property
        def x(self):
            return self._x
    
        @x.setter
        def x(self, value):
            if value <= 0:
                raise ValueError("Value must be positive")
            self._x = value
    
    o = C()
    print o.x
    o.x = 5
    print o.x
    o.x = -2
    

    【讨论】:

      【解决方案2】:

      我建议你阅读这篇文章,即使它是针对 Java 程序员的: Python Is Not Java

      【讨论】:

        【解决方案3】:

        如果您在 C# 中公开了一个属性,那么以后需要将其更改为一个属性,您还需要重新编译所有使用原始类的代码。这很糟糕,所以从第一天起就将任何公共属性都设置为属性以“以防万一”。

        如果您有一个从其他代码中使用的属性,那么以后需要将其更改为属性,那么您只需更改它,不需要发生任何其他事情。所以使用普通属性,直到你发现你需要更复杂的东西。

        【讨论】:

          猜你喜欢
          • 2020-05-26
          • 2011-09-12
          • 2022-01-18
          • 2012-12-10
          • 2012-04-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多