1
getattr
に似た関数を実装したいと思いますが、ドット付き文字列を受け取り、各属性をトラバースします。点列の文字列を受け入れる関数 `getattr`のようなもの
def getattr_multiple_level(obj, attr_string):
attr_names = attr_string.split('.')
next_level = obj
for attr_name in attr_names:
next_level = getattr(next_level, attr_name)
return next_level
class Test():
def make_name(self, pre, suffix=""):
return str(pre) + "_my_office_" + suffix
p = Test()
p.room = Test()
p.room.office = Test()
attr = getattr_multiple_level(p, 'room.office.make_name')
これを行うための組み込み方法はありますか?可能性のあるすべての例外やエッジケースを処理するために、上記のコードでどのような改善を行うことができますか?