V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xiaoke0718
V2EX  ›  问与答

Python -类-函数参数-takes 0 positional arguments but 1 was given

  •  
  •   xiaoke0718 · 2018-05-30 06:56:56 +08:00 · 4620 次点击
    这是一个创建于 2370 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在学习 Python 基础的时候,在创建某一个 shownametest()函数,解析器会报错 ‘’‘ ypeError: shownametest() takes 0 positional arguments but 1 was given ’‘’ ‘’‘ import pygame

    from settings import Settings

    from ship import Ship import game_functions as gf from pygame.sprite import Group

    def run_game(): #初始化游戏并创建一个屏幕对象 pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_htight)) pygame.display.set_caption("Alien Invasion")

    #创建一艘飞船
    ship = Ship(ai_settings, screen)
    
    #创建一个用于存储子弹的编组
    bullets = Group()
    
    #设置背景色
    bg_color = (230, 230, 230)
    
    
    #开始游戏的主循环
    while True:
        gf.check_events(ai_settings, screen, ship, bullets)
        ship.update()
        gf.update_bullets(bullets)
        gf.update_screen(ai_settings, screen, ship, bullets)
    
        #监视键盘和鼠标事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
    
        #每次循环时都重绘屏幕
        screen.fill(ai_settings.bg_color)
        ship.blitme()
    
        #让最近绘制的屏幕可见
        pygame.display.flip()
    

    run_game() ’‘’

    4 条回复    2018-06-01 10:55:12 +08:00
    Sylv
        1
    Sylv  
       2018-05-30 08:51:34 +08:00 via iPhone
    类方法没写 self ?
    def shownametest(self):
    BingoXuan
        2
    BingoXuan  
       2018-05-30 09:39:09 +08:00
    类和实例是不同的。self 会指向对应的实例对象。在实例方法中,默认第一个参数是 self。

    你的代码已经实例化一个类了,所以 ship 是一个实例对象。当调用方法没有加装饰器 @classmethod 的话,在实例中调用就会在第一个参数加上 self,所以就报错
    whoami9894
        3
    whoami9894  
       2018-05-31 20:29:21 +08:00 via Android
    @BingoXuan
    应该是 staticmethod
    BingoXuan
        4
    BingoXuan  
       2018-06-01 10:55:12 +08:00
    @whoami9894
    对,最近病了神志不清。 @ classmethod 是会传入类参数的.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2926 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 14:48 · PVG 22:48 · LAX 06:48 · JFK 09:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.