2

削除できるクラスの特定の属性があります。ただし、その他は削除禁止です。

class klass:
    a = 1
    b = 2

    def __delattr__(cls, attr):
        if attr=='a':
            pass # go ahead, delete attribute a
        elif attr=='b':
            raise TypeError("Bad boy/girl, you shouldn't delete attribute b")

del klass.a
del klass.b

このコードは機能しません。コードの何が問題になっていますか? どちらの属性も削除中です。ちなみにPython3を使っています。__delattr__動作しないようです。クラスをインスタンス化したくないことに注意してください(したくないfoo = klass(); del foo.a;/したくないdel klass.a;)。ありがとう。

4

3 に答える 3