如何解决使用 getattr 调用函数时返回类 NoneType
我正在尝试构建一个程序,该程序将替换数千种产品和每个产品的数十个功能的维度值。为此,我使用 re 在 XML 程序中查找和替换文本块。
在下面的代码中,我构建了一个类和一些函数,这些函数将返回将替换原始文本的内容。
我正在尝试使用我的 get() 函数动态调用我的类中的其他函数,但它只返回
如果我只是调用 myClass.function() 它确实返回
任何帮助将不胜感激!
class Variable:
def __init__(self,variable,metric_flag,nominal,upper_tol,lower_tol):
self.variable = variable
self.metric_flag = metric_flag
self.nominal = nominal
self.upper_tol = upper_tol
self.lower_tol = lower_tol
def get(self):
def func_not_found():
print(f'No Variable {self.variable} Found!')
func_name = self.variable
func = getattr(self,func_name,func_not_found)
func()
def wobble_comp(self):
if self.metric_flag == 1:
return f""" <WobbleZ1>67.056</WobbleZ1>
<WobbleX1>{mm(self.nominal) / 2}</WobbleX1>
<WobbleZ2>12.7</WobbleZ2>
<WobbleX2>{mm(self.nominal) / 2}</WobbleX2>"""
else:
return f""" <WobbleZ1>67.056</WobbleZ1>
<WobbleX1>{self.nominal / 2}</WobbleX1>
<WobbleZ2>12.7</WobbleZ2>
<WobbleX2>{self.nominal / 2}</WobbleX2>"""
def axial_primary_relief_angle(self):
return f""" <ReliefAngle90No1Nominal>{self.nominal}</ReliefAngle90No1Nominal>
<ReliefAngle90No1UpperTol>{self.upper_tol}</ReliefAngle90No1UpperTol>
<ReliefAngle90No1LowerTol>{self.lower_tol}</ReliefAngle90No1LowerTol>"""
def axial_primary_relief_land_width(self):
if self.metric_flag == 1:
return f""" <Phase90Nominal>{mm(self.nominal)}</Phase90Nominal>
<Phase90UpperTol>{mm(self.upper_tol)}</Phase90UpperTol>
<Phase90LowerTol>{mm(self.lower_tol)}</Phase90LowerTol>"""
else:
return f""" <Phase90Nominal>{self.nominal}</Phase90Nominal>
<Phase90UpperTol>{self.upper_tol}</Phase90UpperTol>
<Phase90LowerTol>{self.lower_tol}</Phase90LowerTol>"""
def axial_secondary_relief_angle(self):
return f""" <ReliefAngle90No2Nominal>{self.nominal}</ReliefAngle90No2Nominal>
<ReliefAngle90No2UpperTol>{self.upper_tol}</ReliefAngle90No2UpperTol>
<ReliefAngle90No2LowerTol>{self.lower_tol}</ReliefAngle90No2LowerTol>"""
def core_diameter(self):
if self.metric_flag == 1:
return f""" <CoreScanNominal>{mm(self.nominal)}</CoreScanNominal>
<CoreScanUpperTol>{mm(self.upper_tol)}</CoreScanUpperTol>
<CoreScanLowerTol>{mm(self.lower_tol)}</CoreScanLowerTol>"""
else:
return f""" <CoreScanNominal>{self.nominal}</CoreScanNominal>
<CoreScanUpperTol>{self.upper_tol}</CoreScanUpperTol>
<CoreScanLowerTol>{self.lower_tol}</CoreScanLowerTol>"""
variable1 = 'core_diameter'
metric_flag1 = 1
nominal1 = .125
high_tol1 = .001
low_tol1 = -.001
v = Variable(variable1,metric_flag1,nominal1,high_tol1,low_tol1)
print(type(v.core_diameter()))
print(type(v.get()))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。