1. ホーム
  2. python

[解決済み] Python - なぜクラスで "self" を使うのか?

2023-04-21 19:18:57

疑問点

この2つのクラスはどのように違うのですか?

class A():
    x=3

class B():
    def __init__(self):
        self.x=3

大きな違いはあるのでしょうか?

どのように解決するのですか?

A.x クラス変数 . B 's self.x インスタンス変数 .

すなわち A 's x はインスタンス間で共有されます。

リストのような変更可能なもので違いを示すのが簡単でしょう。

#!/usr/bin/env python

class A:
    x = []
    def add(self):
        self.x.append(1)

class B:
    def __init__(self):
        self.x = []
    def add(self):
        self.x.append(1)

x = A()
y = A()
x.add()
y.add()
print("A's x:", x.x)

x = B()
y = B()
x.add()
y.add()
print("B's x:", x.x)

出力

A's x: [1, 1]
B's x: [1]