我对 '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