亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

類型錯誤位置參數自我丟失

類型錯誤位置參數自我丟失

飲歌長嘯 2022-05-24 09:23:00
為什么我無法訪問 Classroom 對象?它顯示: next_scene_name = start_scene.enter() #error TypeError: enter() missing 1 required positional argument: 'self'請解釋我犯了什么錯誤。#classclass Engine(object):    #(map_object_with_classroom, player_object)    def __init__(self,map_object,player_object):        self.map_object = map_object        self.player_object = player_object    def play(self):        print('\n')        print('test ok')        start_scene = self.map_object.begin()        end_scene = self.map_object.Senario['auditorium']        while start_scene != end_scene:            next_scene_name = start_scene.enter() #error            start_scene = self.map_object.next_scene(next_scene_name)class Player(object):    Student_influence = 20    Staff_influence = 20    principle_influence = 20    def __init__(self,name):        self.name = nameclass Scene(object):    def enter(self):        print("test")class ClassRoom(Scene):    def enter(self):        print('test ok!')        return 'sportsclub'class SportsClub(Scene):    def enter(self):        print('test ok!')        return 'scienceclub'class ScienceClub(Scene):    def enter(self):        print('test ok!')        return 'canteen'class Canteen(Scene):    def enter(self):        print('test ok!')        return 'auditorium'class Auditorium(Scene):    def enter(self):        print('test ok!')        return 'finished'class Finished(Scene):    def enter(self):        print('test ok!')        return Noneclass Map(object):    Senario = {'finished':Finished, 'classroom':ClassRoom,'sportclub':SportsClub, 'scienceclub':ScienceClub, 'canteen':Canteen, 'auditorium':Auditorium}    def __init__(self,start_scene):        self.start_scene = start_scene    def begin(self):        return self.next_scene(self.start_scene)    def next_scene(self,scene_name):        nxt = self.Senario.get(scene_name)        return nxt當我打印 start_scene 它顯示那是什么?但是當我打印 ClassRoom 類的實例時,它顯示 < main .ClassRoom object>
查看完整描述

1 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

在next_scene中,您正在返回,但ClassRoom不是. 為此,您需要,然后有一個ClassRoomreturn nxt()self


class Map(object):

    Senario = {'finished':Finished, 'classroom':ClassRoom,'sportclub':SportsClub, 'scienceclub':ScienceClub, 'canteen':Canteen, 'auditorium':Auditorium}


    def __init__(self,start_scene):

        self.start_scene = start_scene


    def begin(self):

        return self.next_scene(self.start_scene)


    def next_scene(self,scene_name):

        # adding the parentheses here will call the class

        # creating an instance

        nxt = self.Senario.get(scene_name)()

        return nxt

舉個小例子:


class X:

    def something(self):

        return 4



X.something()

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: something() missing 1 required positional argument: 'self'

您還沒有創建任何實例,因此self還不存在。但是,如果我們將其更改為:


x = X()

x.something()

4

Aself被創建是因為底層的類機制將調用 的基本實現__init__,而不涉及血淋淋的細節


查看完整回答
反對 回復 2022-05-24
  • 1 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號