私はPythonでクラスを持っていて、次のような文字列に応じていくつかの属性の1つを取得したいと思います:
class my_class:
def __init__(self):
self.att1=1
self.att2=2
self.att3=3
def getatt (self, number):
return self.att(number)
どうすればこれを実現できますか?
私はPythonでクラスを持っていて、次のような文字列に応じていくつかの属性の1つを取得したいと思います:
class my_class:
def __init__(self):
self.att1=1
self.att2=2
self.att3=3
def getatt (self, number):
return self.att(number)
どうすればこれを実現できますか?
def getatt(self, number):
return getattr(self, 'att%d' % number)
または、新しいスタイルの書式設定:
def getatt(self, number):
return getattr(self, 'att{}'.format(number))
また、これらの属性が多数ある場合は、リストを格納し、インデックスから要素を取得することを検討する必要があることに注意してください。
私は次のようなことをします
class My_Class:
def __init__(self):
self.att = {1: 1, 2: 2, 3: 3}
def getatt(self, number):
return self.att[number]
def __getattr__(self, attname):
if attname.startswith('att') and attname != 'att':
try: num = int(attname[3:])
except ValueError: pass
else: return self.att[num]
raise AttributeError(attname)
(未テスト)
これにより、バンドルされたデータや、必要に応じて属性にアクセスできます。