【问题标题】:Instance vs. Member Variables python 3实例与成员变量 python 3
【发布时间】:2014-11-25 02:57:05
【问题描述】:

python 3 中的实例变量和成员变量有什么区别,您将如何创建它们? 我们只是在学习如何在 python 3 中创建类,我不了解这些变量类型。

我可以在“__ init __”方法之前设置它们吗?

我正在编写一个代码,其中 ID 需要是实例变量,而 balance 和 AnnualInterestRate 需要是成员变量。这就是我所拥有的:

    def __init__(self, ID=0, initialbalance=100.0, annualInterestRate=0.0):
        self.__ID = int(ID)
        self.__balance = float(initialbalance)
        self.__annualInterestRate = float(annualInterestRate)

要使 Id 成为类变量,我应该将其设置为“__ init __”之前的数量吗?我确实需要能够稍后在程序中更改该值。

【问题讨论】:

    标签: python class python-3.x instance


    【解决方案1】:

    类属性是类本身拥有的属性。它们将由类的所有实例共享。因此,它们对于每个实例都具有相同的值。成员变量仅特定于类的成员,并且对于类的每个实例可以具有不同的值。

    这显示了一个类属性。请注意,a 在所有实例中都是相同的。

    >>> class A:
    ...     a = "I am a class attribute!"
    ... 
    >>> x = A()
    >>> y = A()
    >>> x.a
    'I am a class attribute!'
    >>> y.a
    'I am a class attribute!'
    >>> A.a
    'I am a class attribute!'
    

    现在,如果我们尝试将其更改为一个,它将全部更改。

    >>> A.a = "I am changed now"
    >>> A.a
    'I am changed now'
    >>> x.a
    'I am changed now'
    >>> y.a
    'I am changed now'
    

    这显示了成员变量以及它们如何特定于每个实例。请注意,这次a 是在__init__ 函数中定义的,使其成为成员变量,而不是类变量。

    >>> class B:
    ...     def __init__(self):
    ...         self.a = 10
    >>> x = B()
    >>> y = B()
    >>> x.a
    10
    >>> y.a
    10
    >>> y.a = 12
    >>> x.a
    10
    >>> y.a
    12
    

    在该类中,self.a 的默认值为 10。在该类的 y 实例中,它更改为 12 (y.a = 12)。类的 x 实例保持默认值 10。

    此答案的开头部分取自 Python Course 上的 Class and Instance Attributes 页面

    【讨论】:

      猜你喜欢
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 2018-11-20
      相关资源
      最近更新 更多