Python 表示函数未定义,尽管仅在上面两行定义

Python says function is not defined despite being defined just two lines above

我有这个class:

class Demo():

    ############################### Drawing functions

    SCREEN_OFFSETX, SCREEN_OFFSETY = SCREEN_WIDTH/16, SCREEN_HEIGHT

    def fix_vertices(vertices):
        return [(int(SCREEN_OFFSETX + v[0]), int(SCREEN_OFFSETY - v[1])) for v in vertices]

    def draw_polygon(polygon, screen, body, fixture):
        transform = body.transform
        vertices = fix_vertices([transform * v * PPM for v in polygon.vertices])
        pygame.draw.polygon(
            screen, [c / 2.0 for c in colors[body.type]], vertices, 0)
        pygame.draw.polygon(screen, colors[body.type], vertices, 1)
    polygonShape.draw = draw_polygon
    ''''
    Do other stuff...
    ''''

我 运行 使用这些代码行:

Car = Demo()
if __name__ == "__main__":
    Car
    print("It Works")

但是当我尝试 运行 时,我收到一个错误,提示 fix_vertices_ 未定义...我该如何解决这个问题?

非常感谢

P.S。和另一个子问题...使用

调用此 class 的正确方法吗
if __name__ == "__main__"

语法或者是否有更好的方法,例如

if __name__ == "__main__":
    main(Demo)

非常感谢

Demo是一个class,如果你打算在class之类的另一个方法中使用fix_vertices之类的class方法draw_polygon 您需要像 self.fix_vertices 一样使用关键字 self.(method)。考虑阅读如何创建 classes.

此外,语句 if __name__ == '__main__': 应该将函数和 class 的声明与它们的使用和实例化分开。您应该先在 if 语句中创建一个 Demo 对象,这样您的模块在导入时就不会执行任何操作。

But when I try to run it I got an error that fix_vertices_ is not defined... how can I fix this?

您已将 fix_vertices 定义为 方法 ,但试图将其作为 自由函数 调用。任选其一。

P.S. and another subquestion... is it the correct way of calling this class using the

if __name__ == "__main__"

syntax or is there a better way for example

if __name__ == "__main__":
     main(Demo)

Thank you very much

实在不清楚你的问题是什么。 if __name__ == "__main__" 对于提供既可导入又可运行的包很有用,“主要功能”不是必需的,但可以方便地确定范围。