に属性を割り当てて、'Nonetype' object
呼び出された場合の動作を Python に指示することはできますか?
これが私の問題です:
のインスタンスを格納するライブラリとして機能するクラスがありますmyOtherObject
。インスタンスを追加する前に、まずそのキーが既に存在するかどうかを確認し、次にそのキーに割り当てられたインスタンスにデータを上書きするのではなく追加します。
class MyClass:
def __init__(self):
self.myLibrary = {}
def __setitem__(self, key, item):
if key not in self.myLibrary:
self.myLibrary[key] = myOtherObject(name=item[0], attr1=[item[1]], attr2=[item[2]])
else:
self.myLibrary[key].attr1.append(item[1])
self.myLibrary[key].attr2.append(item[2])
def __getitem__(self, key):
if key in self.myLibrary:
return self.myLibrary[key]
else:
return None #???
ライブラリからデータを取得するときは、キーも存在するかどうかを確認し、キーが存在する場合にのみ割り当てられたオブジェクトを返す必要があります。これは正常に動作するか、オブジェクトのみを呼び出しますが、そのオブジェクトの属性を呼び出す場合はそうではありません:
>>> o = MyClass()
>>> o['key1'] = ['name1','b','c']
>>> o['key1']
<__main__.myOtherObject instance at 0x05509B48>
>>> o['key1'].attr1
'b'
>>> o['key2']
>>> o['key2'].attr1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'attr1'
何らかの方法で Python に何もせずに、属性が呼び出されたときに戻るように指示できNone
ますか?attr1
attr2
'NoneType' object