如何在 VSCode 中使用多个文件和类,然后通过导入在一个文件中使用它们?

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

我正在尝试使用 OOP 制作一个程序,它是一个蛇复制品,但是程序的开始阶段和设置根本不起作用,由于在此之前不断发生错误,我什至无法让窗口正确显示。

我得到的错误是:

File "c:\Users\james\OOP Snake python\world.py", line 22, in <module> Game.RunGame(Game) File "c:\Users\james\OOP Snake python\world.py", line 18, in RunGame self.window.screen.update() ^^^^^^^^^^^ AttributeError: type object 'Game' has no attribute 'window'
objects.py:

import turtle 
class Snake: 
    def _init_(self): 
        self.snake_head = turtle.Turtle() 
        self.InitialiseSnake() 
    def InitialiseSnake(self): 
        self.snake_head.speed(0) 
        self.snake_head.shape("square") 
        self.snake_head.color("black") 
        self.snake_head.penup() 
        self.snake_head.goto(0, 100) 
        self.snake_head.direction = "stop" 

window.py:

import turtle 

class Window: 
    def __init__(self, width, height): 
        self.screen = turtle.Screen() 
        self.screen.title("OOP Snake") 
        self.screen.bgcolor("blue") 
        self.screen.setup(width, height) 
        self.screen.tracer(0) 

world.py(主文件):

import sys 
import time 
from window import Window, turtle 
from objects import Snake 
sys.path.insert(1, 'c:/Users/james/OOP Snake python') 

HEIGHT = WIDTH = 800 

class Game: 

    def __init__(self, window, snake): 
        self.window = Window(WIDTH, HEIGHT) 
        self.snake = Snake() 

    def RunGame(self): 
        # game loop 
        while True:
            self.window.screen.update() 
            Game.RunGame(Game) 

我期待这会加载窗口,但它只是给出了上面的错误。

python object oop attributeerror
1个回答
0
投票

在 RunGame 方法中,您应该使用

self
属性,而不是使用类名(只能访问静态属性/方法)。

此外,您正在进行递归调用(即该方法正在调用自身,这最终会导致

StackOverFlow
错误。

您只需删除此行即可。

© www.soinside.com 2019 - 2024. All rights reserved.