2016-10-09 6 views
1

変数またはプロパティが格納される名前を取得する方法はありますか?変数またはプロパティが格納されている名前を取得する

ような何か:

class X: 
    def __init__(self): 
    self.name = __name_under_which_I_m_stored__ 

jeff = X() 
print(jeff.name) # yields 'jeff' 

プリティこれが不可能であることを確認し、しかし、あなたが知っていることはありません...。さらに、私は名前が(do_something(X()))を、不特定することができることを承知しているか、あいまいな(jeff=frank=X())。

+0

値に基づいてプロパティを取得することを意味しますか?たとえば、self.x = 5の場合、 '5'が渡されたとき' x'を取得しますか?そうでなければ、いくつかの例を挙げてください。 –

答えて

3

Python VMには、名前のリテラル名を知る方法がありません。オブジェクトの場合は、__name__属性を介して名前にアクセスできます。

これを行うには、名前と値のマッピングを実装する必要があります。これはdictで行うことができます。

class X: 
    def __init__(self): 
    self.names = {}; 

    def set(self, name, value): 
    self.names[name] = value 

    def get(self, name): 
     return (name, self.names[value]) 



jeff = X() 
jeff.set("name", "jeff"); 
print(jeff.get("name")) # yields ("name", "jeff") 
関連する問題