2

私のコード:

class Num:

    nums = []

    def add(self, num):
        self.nums.append(num)

    def __str__(self):
        return  str(self.nums)

a = Num()
b = Num()
a.add(5)
print str(a)
print str(b)

生産する

[5]
[5]

b には何も追加されていませんが、

4

3 に答える 3

8

nums はクラス属性であり、インスタンス属性ではないためです。

class Num:

    def __init__(self):
        self.nums = []

    def add(self, num):
        self.nums.append(num)

    def __str__(self):
        return  str(self.nums)

このように実装すると、期待する動作が表示されます。

于 2013-05-30T12:36:30.037 に答える
4
class Num:
    nums = []

クラス定義nums文で定義するとnums、クラス変数になります。__init__代わりに、インスタンスの属性として設定することにより、メソッドで定義します。

class Num:
    def __init__(self): # self is the instance
        self.nums = []  # setting nums on the instance
于 2013-05-30T12:37:33.417 に答える