0

カスタム メソッドを試してみるために作成したこの小さなクラスが__getattr__あり、それを実行するたびに属性エラーが発生します。

class test:
    def __init__(self):
        self.attrs ={'attr':'hello'}
    def __getattr__(self, name):
        if name in self.attrs:
            return self.attrs[name]
        else:
            raise AttributeError

t = test()
print test.attr

出力は次のとおりです。

Traceback (most recent call last):
  File "test.py", line 11, in <module>
    print test.attr
AttributeError: class test has no attribute 'attr'

何を与える?属性エラーが発生する前にgetattrが呼び出されたと思いましたか?

4

2 に答える 2

8

クラスには属性がないため、インスタンスにtest 次のようになります。attrt

class test:
    def __init__(self):
        self.attrs ={'attr':'hello'}
    def __getattr__(self, name):
        if name in self.attrs:
            return self.attrs[name]
        else:
            raise AttributeError

t = test()
print t.attr
于 2011-08-17T18:41:23.543 に答える