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__"
对于提供既可导入又可运行的包很有用,“主要功能”不是必需的,但可以方便地确定范围。
我有这个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__"
对于提供既可导入又可运行的包很有用,“主要功能”不是必需的,但可以方便地确定范围。