所以我有一个自制的类element
,我想创建一个函数,该函数接受关键字参数,这些参数传递给element
的构造函数中
它看起来像这样:
class element:
def __init__(self, name="element", count=1):
self.name = name
self.count = count
def create_element(**kwargs):
try:
el = element(**kwargs)
except TypeError:
print("You chose arguments which no element has")
return el
我的问题不是我想要一个完全不同的代码,而是要解决我想返回方法el
的{{1}}时遇到的问题。如果我现在运行此代码,则有一个create_element
,它告诉我在初始化变量之前我正在访问变量。
我尝试了UnboundLocalError
块,但结果相同。
我知道为什么会这样,但是我没有解决方案。
答案 0 :(得分:2)
您可以使用el
之外的默认值来定义try
:
class element:
def __init__(self, name="element", count=1):
self.name = name
self.count = count
def create_element(**kwargs):
el = None
try:
el = element(**kwargs)
except TypeError:
print("You chose arguments which no element has")
finally:
return el
答案 1 :(得分:0)
您可以在执行try
块之前,将返回值初始化为某个默认值 :
el = None # initialize return value to default "None"
try:
el = element(**kwargs)
except TypeError:
print("You chose arguments which no element has")
return el
或者,将return语句移到try块内
try:
el = element(**kwargs)
return el
except TypeError:
print("You chose arguments which no element has")
答案 2 :(得分:-1)
这就是为什么finally存在于python中的原因。
def create_element(**kwargs):
el = None
try:
el = element(**kwargs)
except TypeError:
print("You chose arguments which no element has")
finally:
return el