我有一个从FlaskForm派生的类,我需要传递参数
class User(FlaskForm):
def __init__(self, argName, argLastName):
super(EditCandidate, self).__init__()
self.name = argLastName
self.lastName = argLastName
name = StringField(default = self.name , validators=[DataRequired(message="Ad xanası doldurulmalıdır."), Length(min=2, max=20, message="Ad min-2, max-20 hərfdən təşkil oluna bilər.")] )
lastName = StringField(default= self.lastName , validators=[DataRequired(message="Soyad xanası doldurulmalıdır."), Length(min=2, max=20, message="Soyad min-2, max-20 hərfdən təşkil oluna bilər.")] )但是Python给了我这个错误:
name = StringField(default = self.name , validators=[DataRequired(message="Ad xanası doldurulmalıdır."), Length(min=2, max=20, message="Ad min-2, max-20 hərfdən təşkil oluna bilər.")] )
NameError: name 'self' is not defined如何解决这个问题?
发布于 2020-10-14 01:59:29
Self表示类的实例/对象,并用于访问其属性和方法。
您的属性被定义为self.name和self.lastName,因此您只能使用上述属性,而不能使用self.argName和self.argLastName-这些属性作为参数传递给函数,不能在函数作用域之外进行访问。
在StringField()调用中替换它们,它应该可以工作。
编辑:
在本例中,这是因为self在init()方法之外,这意味着如果在初始化函数之外的任何地方使用该单词,则不会定义该单词本身。解决方法:缩进姓名和姓氏变量,使它们与self.<>属性显示在相同的缩进量上,如下所示
class User(FlaskForm):
def __init__(self, argName, argLastName):
super(EditCandidate, self).__init__()
self.name = argLastName
self.lastName = argLastName
name = StringField(default = self.name , validators=[DataRequired(message="Ad xanası doldurulmalıdır."), Length(min=2, max=20, message="Ad min-2, max-20 hərfdən təşkil oluna bilər.")] )
lastName = StringField(default= self.lastName , validators=[DataRequired(message="Soyad xanası doldurulmalıdır."), Length(min=2, max=20, message="Soyad min-2, max-20 hərfdən təşkil oluna bilər.")] )https://stackoverflow.com/questions/64337928
复制相似问题