关于“自我”实例,我不理解什么?

2024-10-03 09:19:54 发布

您现在位置:Python中文网/ 问答频道 /正文

这里是到我的github的链接:airplane.py

我一直收到错误:

NameError: name 'self' is not defined

我已经浏览了无数其他堆栈溢出线程,对于self实例,我显然有一些不理解的地方,因为我觉得我已经尝试了他们的建议。为了澄清,末尾的Airplane.__init__(self)应该在类之外,因为我想在这一点上实际执行代码。如果有更好的方法,请让我知道,因为我怀疑这可能是问题所在


Tags: 实例namepyselfgithubis堆栈链接
2条回答

如果你有C++类的经验,那么你可以在C++中使用^ {CD1>}等价于^ {CD2>}。p>

当您将self传递给Airplane成员函数时,它表示要使用的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__中的代码

比如说

> 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所指的内容

如果要执行在__init__(self)中编写的内容,只需通过以下方式创建该类的实例:

tmp = Airplane()

相关问题 更多 >