'name not defined' 将 class 设置为变量时
'name not defined' when setting a class to a variable
抱歉这个愚蠢的问题,我似乎无法在任何地方找到答案。
我正在尝试将我的 class 转换为一个变量,但它给我一个错误
NameError: name 'period' is not defined
class Stuff():
def __init__(self, period = 1, division = 1):
print(str(period), str(division))
stuff = Stuff(period, division)
但我不明白为什么它没有被定义,因为我特意将它定义为“1”只是为了确定。
如果我不定义参数,我会得到同样的错误
class Stuff():
def __init__(self, period, division):
print(str(period), str(division))
stuff = Stuff()
我不想在调用参数之前定义参数,因为参数在那之前没有值。
我也不明白为什么需要定义它,因为函数启动参数不是文字。
一些事情。
首先,您没有将 class“转换”为变量。您正在实例化类型并将该实例分配给一个变量,该变量包含对对象的引用。
转到手头的问题。正如评论所暗示和扩展的那样,您从根本上误解了默认参数和实例化。
在您的第一个示例中,您有 period
和 division
参数,它们都在构造函数 (__init__
) 的范围内定义。在构造函数中使用它们是有效的,因为它们存在在那个范围内。
在此之下,您尝试通过传递名为 period
和 division
的变量来实例化 Stuff
,其中 不存在 。它们不存在,因为你是 outside of the scope 的构造函数。
你需要创建这些
class Stuff():
def __init__(self, period = 1, division = 1):
print(str(period), str(division))
period = 1
division = 1
stuff = Stuff(period, division)
定义的变量与Stuff
class的参数无关,只是在实例化此对象时传入。
在你的第二个例子中,你已经从实例化中删除了这些不存在的变量,这是正确的,但你也删除了 Stuff
class 中参数的默认分配,这是错误的。这是错误的,因为现在你正在实例化一个对象,它的构造函数有必需的参数,没有这个它不知道如何处理这些参数。
错误反映了这一强制性要求
TypeError: __init__() missing 2 required positional arguments: 'period' and 'division'
对于第二个例子,正确的语法是
class Stuff():
def __init__(self, period = 1, division = 1):
print(str(period), str(division))
stuff = Stuff()
抱歉这个愚蠢的问题,我似乎无法在任何地方找到答案。
我正在尝试将我的 class 转换为一个变量,但它给我一个错误
NameError: name 'period' is not defined
class Stuff():
def __init__(self, period = 1, division = 1):
print(str(period), str(division))
stuff = Stuff(period, division)
但我不明白为什么它没有被定义,因为我特意将它定义为“1”只是为了确定。
如果我不定义参数,我会得到同样的错误
class Stuff():
def __init__(self, period, division):
print(str(period), str(division))
stuff = Stuff()
我不想在调用参数之前定义参数,因为参数在那之前没有值。 我也不明白为什么需要定义它,因为函数启动参数不是文字。
一些事情。
首先,您没有将 class“转换”为变量。您正在实例化类型并将该实例分配给一个变量,该变量包含对对象的引用。
转到手头的问题。正如评论所暗示和扩展的那样,您从根本上误解了默认参数和实例化。
在您的第一个示例中,您有 period
和 division
参数,它们都在构造函数 (__init__
) 的范围内定义。在构造函数中使用它们是有效的,因为它们存在在那个范围内。
在此之下,您尝试通过传递名为 period
和 division
的变量来实例化 Stuff
,其中 不存在 。它们不存在,因为你是 outside of the scope 的构造函数。
你需要创建这些
class Stuff():
def __init__(self, period = 1, division = 1):
print(str(period), str(division))
period = 1
division = 1
stuff = Stuff(period, division)
定义的变量与Stuff
class的参数无关,只是在实例化此对象时传入。
在你的第二个例子中,你已经从实例化中删除了这些不存在的变量,这是正确的,但你也删除了 Stuff
class 中参数的默认分配,这是错误的。这是错误的,因为现在你正在实例化一个对象,它的构造函数有必需的参数,没有这个它不知道如何处理这些参数。
错误反映了这一强制性要求
TypeError: __init__() missing 2 required positional arguments: 'period' and 'division'
对于第二个例子,正确的语法是
class Stuff():
def __init__(self, period = 1, division = 1):
print(str(period), str(division))
stuff = Stuff()