import pygame
from pygame.locals import *
pygame.init()
class levelClass(object):
def __init__(self, name):
self.name = name
Run Code Online (Sandbox Code Playgroud)
这个窗口的初始名称
def makeWindow(self):
screen = pygame.display.set_mode((800,800))
pygame.display.set_caption(self.name)
def drawName(self):
myfont = pygame.font.SysFont("monospace", 25)
label = myfont.render(self.name, 1, (255,0,0))
screen.blit(label, (400,400))
level = levelClass('Level 0')
while True:
level.__init__()
level.drawName()
level.makeWindow()
for event in pygame.event:
if event.type == QUIT:
pygame.exit()
sys.close()
pygame.display.update()
Run Code Online (Sandbox Code Playgroud)
这将创建一个名为Level 0的窗口并在窗口中写入,但我看到这个错误: init()缺少1个必需的位置参数:'name'
__init__(...)创建对象时,无需显式调用:
level = levelClass('Level 0')
Run Code Online (Sandbox Code Playgroud)
它隐式调用__init__(...)参数"Level 0",因此你不需要在while循环中执行它.
该__init__方法大致代表Python中的构造函数,因此在创建对象时应该只执行一次.
编辑:
总之,__init__()在创建对象时,不得调用:
level = levelClass('Level 0')
Run Code Online (Sandbox Code Playgroud)
它被隐式调用,所以要纠正你的问题,删除这一行:
level.__init__()
Run Code Online (Sandbox Code Playgroud)