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__,而不涉及血淋淋的細節
添加回答
舉報