2024-10-03 09:19:54 发布
网友
这里是到我的github的链接:airplane.py
我一直收到错误:
NameError: name 'self' is not defined
我已经浏览了无数其他堆栈溢出线程,对于self实例,我显然有一些不理解的地方,因为我觉得我已经尝试了他们的建议。为了澄清,末尾的Airplane.__init__(self)应该在类之外,因为我想在这一点上实际执行代码。如果有更好的方法,请让我知道,因为我怀疑这可能是问题所在
Airplane.__init__(self)
如果你有C++类的经验,那么你可以在C++中使用^ {CD1>}等价于^ {CD2>}。p>
当您将self传递给Airplane成员函数时,它表示要使用的Airplane类的当前实例
self
Airplane
class Airplane(): def __init__(self): ### IS INIT? ### f = open("log_file.txt", "w") f.write("test init") f.close() ### INSTANTIATE SUBSYSTEMS ### left_control_pitch = Left_Control_Pitch(self) self.left_control_pitch = left_control_pitch ### INITIALIZE SUBSYSTEMS ### self.left_control_pitch.__init__() def periodic(self): ### RUN EXECUTE METHODS ### self.left_control_pitch.level()
在这里,每次创建Airplane对象时,它都会执行__init__中的代码
__init__
比如说
> a1 = Airplane() """ You can call the periodic function for a1 like so """ a1.periodic() # Here the self will point to a1
当您不在飞机class(或该类的另一个方法,您在定义时将self单词作为参数)的__init__函数的范围内时,self单词不再有意义(除非您在全局范围内将其定义为其他内容),因为它在全局范围内不存在。因此,它无法识别self所指的内容
class
如果要执行在__init__(self)中编写的内容,只需通过以下方式创建该类的实例:
__init__(self)
tmp = Airplane()
如果你有C++类的经验,那么你可以在C++中使用^ {CD1>}等价于^ {CD2>}。p>
当您将
self
传递给Airplane
成员函数时,它表示要使用的Airplane
类的当前实例在这里,每次创建
Airplane
对象时,它都会执行__init__
中的代码比如说
当您不在飞机
class
(或该类的另一个方法,您在定义时将self
单词作为参数)的__init__
函数的范围内时,self
单词不再有意义(除非您在全局范围内将其定义为其他内容),因为它在全局范围内不存在。因此,它无法识别self
所指的内容如果要执行在
__init__(self)
中编写的内容,只需通过以下方式创建该类的实例:相关问题 更多 >
编程相关推荐