接受虚线字符串的类似python`getattr`的函数
我想实现一个类似于接受虚线字符串的类似python`getattr`的函数,python,oop,object,attributes,Python,Oop,Object,Attributes,我想实现一个类似于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_le
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')
是否已经有一个内置的方法来实现这一点?或者,可以对上述代码进行哪些改进,以处理所有可能的异常和边缘情况?是的,存在“内置方式”。您可以使用属性装饰器
结果:
grzegorz@grzegorz-GA-78LMT-USB3:~/tmp$ python3 propery_test.py
ubik
Philip Kindred Dick
是的,有“内置方式”。您可以使用属性装饰器
结果:
grzegorz@grzegorz-GA-78LMT-USB3:~/tmp$ python3 propery_test.py
ubik
Philip Kindred Dick