python - __init__() 缺少 1 个必需的位置参数 : 'name'

标签 python class init

import pygame
from pygame.locals import *

pygame.init()

class levelClass(object):
    def __init__(self, name):
        self.name = name

这个窗口的初始名称

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

这将创建一个名为 Level 0 的窗口并将其写入窗口,但我看到了这个错误: init() 缺少 1 个必需的位置参数:'name'

最佳答案

您无需调用 __init__(...)明确地,当您创建对象时:

level = levelClass('Level 0')

它隐式调用了__init__(...)使用参数“0 级”,因此您无需在 while 中执行此操作循环。

__init__方法大致代表 Python 中的构造函数,因此它应该只在您创建对象时执行一次。

编辑: 总之,你不能调用__init__() ,当您创建对象时:

level = levelClass('Level 0')

它是隐式调用的,因此要更正您的问题,请删除此行:

level.__init__()

关于python - __init__() 缺少 1 个必需的位置参数 : 'name' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20889680/

相关文章:

asp.net - 与在PreInit Init中创建和添加控件的区别

python - 如何计算Scrapy中的空响应数?

python - 组成:为什么 "container instance"改变时 "contained instance"属性没有更新?

python - 即使使用信号处理程序,数据库调用也会中断

c++ - 如何在线程之间共享一个全局对象?

c++ - 类中动态分配的数组

python - Blender Python `bpy` `__init__.py` ,显然是从不存在的模块 `_bpy` 导入的

Java - 数组 <init> 错误

python - 具有附加参数的 PyQt5 QPushbutton

python - pip 安装不起作用,InvalidSchema : Missing dependencies for SOCKS support