def __getattr__(self, name): if spam(name): return egg raise AttributeError("'{0.__class__.__name__} object has no attribute '{1}''" .format(self, name))
といったコードは、委譲!委譲!委譲!を実践すると良く書きますが、
毎回、"'{0.__class__.__name__} has no attribute '{1}''"を書くと、ツヅリ間違いの元です。
なので、関数にしてみました。
def noAttrError(self, name): return AttributeError("'{0.__class__.__name__} object has no attribute '{1}''" .format(self, name))
ところで、最初は「Pythonのソースコードには"StandardNoAttrMsg"みたいな関数があるに違いない!」
と思って検索してみたのですが、そんなものはありませんでした。
ひたすら"%s object has no attribte %s"のコピペでした(と言っても3箇所程度でしたが)。
ソースを検索して気づいたのですが、
新スタイルクラスでは "%s object has no attribute %s" ですが、
旧スタイルクラスだと "%s instance has no attribute %s" なのですね。
だからって、どうという事も無いですが。