Pythonでクラススコープを持つグローバル変数を定義する適切な方法は何ですか?
C/C++/Javaのバックグラウンドから来た私はこれが正しいと思います:
class Shape:
lolwut = None
def __init__(self, default=0):
self.lolwut = default;
def a(self):
print self.lolwut
def b(self):
self.a()
あなたが持っているものは正しいですが、あなたはそれをグローバルとは呼ばないでしょうが、それはクラス属性であり、クラスを介してアクセスできますShape.lolwut
またはインスタンスを介してshape.lolwut
ただし、クラス属性ではなくインスタンスレベルの属性を設定するため、設定中は注意してください
class Shape(object):
lolwut = 1
shape = Shape()
print Shape.lolwut, # 1
print shape.lolwut, # 1
# setting shape.lolwut would not change class attribute lolwut
# but will create it in the instance
shape.lolwut = 2
print Shape.lolwut, # 1
print shape.lolwut, # 2
# to change class attribute access it via class
Shape.lolwut = 3
print Shape.lolwut, # 3
print shape.lolwut # 2
出力:
1 1 1 2 3 2
誰かが1 1 2 2 3 3
であると期待するかもしれませんが、それは間違っているでしょう