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

问题描述 投票:0回答:1

我有这堂课:

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。还有另一个子问题...这是使用

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

语法或例如有更好的方法

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

非常感谢

python function if-statement box2d
1个回答
0
投票

我认为您应按以下方式声明您的方法

class Demo():

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

    SCREEN_OFFSETX, SCREEN_OFFSETY = SCREEN_WIDTH/16, SCREEN_HEIGHT

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

    def draw_polygon(self, 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...
```
© www.soinside.com 2019 - 2024. All rights reserved.