__init __()缺少1个必需的位置参数:'name'

use*_*605 1 python class init

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'

Chr*_*ian 6

__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)