最善の解決策は、クラス階層を変更して、凝ったトリックなしで必要なクラスを取得できるようにすることだと思います。
ただし、これを行わない本当に正当な理由がある場合は、記述子を使用しcolor
て属性を非表示にすることができます。 これを機能させるには、新しいスタイルクラスを使用する必要があります。
class A(object):
name = 7
description = 8
color = 9
class Hider(object):
def __get__(self,instance,owner):
raise AttributeError, "Hidden attribute"
def __set__(self, obj, val):
raise AttributeError, "Hidden attribute"
class B(A):
color = Hider()
次に、属性AttributeError
を使用しようとすると、が表示されます。color
>>> B.color
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in __get__
AttributeError: Hidden attribute
>>> instance = B()
>>> instance.color
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in __get__
AttributeError: Hidden attribute
>>> instance.color = 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in __set__
AttributeError: Hidden attribute