Python 为什么return不返回method中的实际值,而是获取None?
假设我们有:Python 为什么return不返回method中的实际值,而是获取None?,python,python-3.x,python-3.6,Python,Python 3.x,Python 3.6,假设我们有: A类: 定义初始化(自): self.Ap1='Ap1val' self.Ap2='Ap2val' self.Ap3='Ap3val' B类: 定义初始化(自): self.Bp1='Bp1val' self.Bp2='Bp2val' self.Bp3=A() C类: 定义初始化(自): self.Cp1='Cp1val' self.Cp2='Cp2val' self.Cp3=B() 我希望使用以下代码获取给定对象字段名的值: def gp(class_inst, key):
A类:
定义初始化(自):
self.Ap1='Ap1val'
self.Ap2='Ap2val'
self.Ap3='Ap3val'
B类:
定义初始化(自):
self.Bp1='Bp1val'
self.Bp2='Bp2val'
self.Bp3=A()
C类:
定义初始化(自):
self.Cp1='Cp1val'
self.Cp2='Cp2val'
self.Cp3=B()
我希望使用以下代码获取给定对象字段名的值:
def gp(class_inst, key):
properties = [prop for prop in dir(class_inst) if not prop.startswith('__')]
for prop in properties:
value = class_inst.__getattribute__(prop)
if isinstance(value, str):
print('{}:{} {} {}'.format(prop, value, prop == key, key))
if prop == key:
print(value)
return value
else:
gp(value, key)
return None
print(gp(C(), 'Bp2'))
但作为回报,我不断得到
None
,即使if返回true并输入正确的return语句。问题是这一行的递归:
else:
gp(value, key)
prop==键测试正在从不处理返回值的递归函数返回值。要处理该值,需要设置else语句以返回递归结果
else:
return gp(value, key)
这个解决方案在我的测试中起作用。它应该是返回gp(值,键)
?