[英]Why am I getting the error: UnboundLocalError: local variable 'lcm' referenced before assignment
[英]Why am I getting the UnboundLocalError that says local variable 'participants' referenced before assignment in Python?
我有以下几行代码,但是不断出现此错误:
错误
UnboundLocalError:分配前引用了局部变量“参与者”
有人知道我在做什么错,这是我的代码:
码:
class Competition(object):
def __init__(self, place, date, start_place, start_time):
self.place = place
self.date = date
self.start_place = start_place
self.start_time = start_time
participants = []
def registration(self, name):
self.name = name
participants += self.name
return deelnemers
participant1 = Competition('Italy', '2018-05-24', 'Rome', '21:55')
participant1.registration('Tom Dumoulin')
在您的__init__
和registration
方法中, participants
都是每个方法局部的变量。 这意味着在方法运行完后,这些变量将消失。
如果要将participants
存储为Competition
类的一部分,则可以使用self
将其附加到实例化对象上
class Competition(object):
def __init__(self, place, date, start_place, start_time):
self.place = place
self.date = date
self.start_place = start_place
self.start_time = start_time
self.participants = []
def registration(self, name):
self.name = name
self.participants.append(self.name)
您在init中定义了没有自身前缀的参与者,因此它是init函数外部不存在的函数局部变量。
然后,您尝试在注册函数中引用它,但它不是类变量(没有自身前缀),因此在初始化完成后不再设置它,因此您尝试向不存在的变量中添加内容。
因此,错误。
如果要在类的所有实例之间共享变量,可以在类内部但在所有类函数外部定义该变量,然后由Competition.participant从函数内部引用该变量。
如果要将变量绑定到类的实例,则在所有情况下都应使用self。 前缀-在设置变量和在任何地方引用它时都可以。
__init__
中的participants = []
没什么用,因为列表未绑定到正在初始化的实例。 你可能想要
self.participants = []
。
在registration
时,尝试使用+=
扩展该列表时必须参考该列表,即self.participants += ...
需要注意的是,如果这会给你提供一个错误name
,如果没有可迭代的或意外的结果name
是一个字符串(每个字母都会被单独附加到列表)。 您可能希望在此使用列表的append
方法,而不要使用extend
(在使用+=
时调用)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.