2011-11-04 8 views

答えて

8

短い答え:はい

class Person(object): 
    def __init__(self): 
     self.first_name = 'Will' 
     self.second_name = 'Awesome' 

my_guy = Person() 
my_guy.gender = "Male" 
print(my_guy.gender) 

は文句を言わない「あなたが

my_guy = Person() 

attr = 'secret_habit' # this could be read from file, keybrd etc. 
value = 'wont tell you' 
setattr(my_guy, attr, value) 

print(my_guy.secret_habit) 

私は得ることができ、あなたも、あなたがコードを書くときに、この属性が呼ばれているものを知っている場合はMale

+1

このアプローチでは注意が必要です: 'Person()。gender'を呼び出すと、Att ributeErrorなので、attrが存在しない場合は、キャッチするようにしてください。 – Daenyth

2

を印刷しますあなたに教えてください

+2

'__dict__'については忘れて、' setattr'/'getattr'を使います。インスタンスディクショナリへのアクセスは脆弱です。大部分ではないかもしれないが、考慮すべき十分に一般的な多くのケース(例えば '__slots__'、古いスタイルのクラス、プロパティ、他の属性アクセスオーバーライド、場合によってはそれ以上)で失敗します。 – delnan

+0

@delan:あなたの提案通りに修正しました。 – yosukesabai

関連する問題