实例与成员变量python 3

时间:2014-11-25 02:57:06

标签: python class python-3.x instance

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 __”之前的数量吗?我确实需要能够在程序中稍后更改该值。

1 个答案:

答案 0 :(得分:0)

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

这显示了一个class属性。请注意,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课程的Class and Instance Attributes页面