0

クラス内でローカル変数として宣言された辞書の値を取得するにはどうすればよいですか? 以下の私のソースを見てください。注: 関数 get_current_weather 内でこの変数を宣言すると、正常に動作します

class Weather(object):
    weather = {
        'January' : 'cold',
        'Febrary' : 'cold'
        }

    def get_current_weather(self):             
        print weather['January']

weather = Weather()
weather.get_current_weather()

端末エラー:

Traceback (most recent call last):
File "game.py", line 27, in <module>
weather.get_current_weather()
File "game.py", line 24, in get_current_weather
print weather['January']
**TypeError: 'Weather' object is not subscriptable**
4

1 に答える 1

1

そうしself.weatherないと、Python は という名前のグローバル変数を見つけようとしますweather

def get_current_weather(self):
    print self.weather['January']  # or  Weather.weather['January']

クラスはそれ自体が名前空間であるため、クラス内の変数はその属性になります:

つまりweather、クラス内は実際には次のとおりです。Weather.weather

例:

>>> class A:
...     foo = 1
...     bar = 2
...     
>>> A.foo
1
>>> A.bar
2
于 2013-06-16T20:50:10.377 に答える