setattr
オブジェクトの外にいるときは、メソッドを使用する必要があることを知っています。setattr
ただし、ユニコードキーで呼び出すのに問題があり、__setattr__
直接使用する必要があります。
class MyObject(object):
def __init__(self):
self.__dict__["properties"] = dict()
def __setattr__(self, k, v):
self.properties[k] = v
obj = MyObject()
そして、次のコンテンツを取得しますobj.properties
:
setattr(obj, u"é", u"à")
: UnicodeEncodeError を発生させますsetattr(obj, "é", u"à")
:{'\xc3\xa9': u'\xe0'}
obj.__setattr__(u"é", u"à")
:{u'\xe9': u'\xe0'}
なぜPythonがこれらの違いで動作しているのか理解できません