我对 'self' 实例有什么不理解的?
What am I not understanding about 'self' instance?
这是我的github的link:airplane.py
我一直收到错误消息:
NameError: name 'self' is not defined
我查看了无数其他堆栈溢出线程,显然我对 self 实例有一些不了解的地方,因为感觉我已经尝试了他们建议的所有内容。为了澄清,最后的 Airplane.__init__(self)
应该在 class 之外,因为我想在此时实际执行代码。如果有更好的方法,请告诉我,因为我怀疑这可能是问题所在。
当您超出飞机 __init__
功能的范围时 class
(或该 class 的另一种方法,您将 self
词作为定义时的参数),那个 self
词不再有意义(除非你将它定义为其他东西,在你的全局范围内),因为它在全局范围内不存在。因此它不会识别 self
指的是什么。
如果你想执行你在 __init__(self)
中写的东西,只需创建一个 class 的实例:
tmp = Airplane()
如果您有使用 C++ 中的 classes 的经验,那么您可以将 self
等同于 C++ 中的 this
。
当您将 self
传递给您的 Airplane
成员函数时,它表示要使用的 Airplane
class 的当前实例。
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__
中的代码
例如
> a1 = Airplane()
"""
You can call the periodic function for a1 like so
"""
a1.periodic()
# Here the self will point to a1
这是我的github的link:airplane.py
我一直收到错误消息:
NameError: name 'self' is not defined
我查看了无数其他堆栈溢出线程,显然我对 self 实例有一些不了解的地方,因为感觉我已经尝试了他们建议的所有内容。为了澄清,最后的 Airplane.__init__(self)
应该在 class 之外,因为我想在此时实际执行代码。如果有更好的方法,请告诉我,因为我怀疑这可能是问题所在。
当您超出飞机 __init__
功能的范围时 class
(或该 class 的另一种方法,您将 self
词作为定义时的参数),那个 self
词不再有意义(除非你将它定义为其他东西,在你的全局范围内),因为它在全局范围内不存在。因此它不会识别 self
指的是什么。
如果你想执行你在 __init__(self)
中写的东西,只需创建一个 class 的实例:
tmp = Airplane()
如果您有使用 C++ 中的 classes 的经验,那么您可以将 self
等同于 C++ 中的 this
。
当您将 self
传递给您的 Airplane
成员函数时,它表示要使用的 Airplane
class 的当前实例。
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__
例如
> a1 = Airplane()
"""
You can call the periodic function for a1 like so
"""
a1.periodic()
# Here the self will point to a1