Getクラスオブジェクト__dict__は特殊な属性
-
20-09-2019 - |
質問
取得すべて定義されたクラスの属性ようにしていく
TheClass.__dict__
ともに、この特殊属性です。がわかりやすく伝えるためだけの自己定義された属性またはい"清潔"のdictすか?
解決
別の解決:
class _BaseA(object):
_intern = object.__dict__.keys()
class A(_BaseA):
myattribute = 1
print filter(lambda x: x not in A._intern+['__module__'], A.__dict__.keys())
とは思わないことはものすごく強まだしております。
これは場所の基本的な問題の答えを指摘で
- 不要
'name convention'
ベースフィルタリング - 提供する独自の実装をマジックの方法、例えば
__len__
ない問題を定義する。
他のヒント
あなたは__dict__
をきれいにすることはできません。
AttributeError: attribute '__dict__' of 'type' objects is not writable
あなたがに頼ることができる命名規則はをます:
class A(object):
def __init__(self, arg):
self.arg = arg
class_attribute = "01"
print [ a for a in A.__dict__.keys()
if not (a.startswith('__') and a.endswith('__')) ]
# => ['class_attribute']
あなたはもちろん上書きまたは特別/魔法を実装することができますので、これは、信頼性がないかもしれません方法は、あなたのクラスで__item__
または__len__
よう
私はシンプルなものはないと思う、と理由があるでしょうか?魔法とユーザー定義属性の間には、言語に強制違いはありません。
あなたは「__」で始まるユーザ定義の属性を持っている場合は、MYYNのソリューションは、動作しません。しかし、それは規則に基づくソリューションを提案します:。あなたがあなた自身のクラスをイントロスペクトしたい場合は、独自の命名規則を定義し、その上でフィルタリングすることができます。
あなたが必要性を説明する場合は、おそらく、我々は、よりよい解決策を見つけることができます。
所属していません StackOverflow