Python中的缩进使Variable无法访问

时间:2019-06-17 14:51:02

标签: python

所以我有一个自制的类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块,但结果相同。 我知道为什么会这样,但是我没有解决方案。

3 个答案:

答案 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