내가 더 잘 이해하고, 각각 독립적으로 조각을 실행하는 데 LPTHW의 43 교훈을 분해하기 위해 노력하고있어, 그것은LPTHW 43 : 함수 객체에는 속성 '입력'
PS C:\Python> python ex43.py
Traceback (most recent call last):
File "ex43.py", line 67, in <module>
a_game.play()
File "ex43.py", line 17, in play
self.scene_map.opening_scene.enter()
AttributeError: 'function' object has no attribute 'enter'
을 반환하는 이유를 이해할 수없는이 없습니다
나는이 코드를 코드의 첫 번째 장면 인으로 만들려고하고 있으며, '각 코드가 어떻게 호출되는지 이해할 수 있도록'중앙 복도에 입력했습니다.
from sys import exit
from random import randint
class Scene(object):
def enter(self):
print "This scene is not yet configured. Subclass it and implement enter()."
exit(1)
class Engine(object):
def __init__(self, scene_map):
self.scene_map = scene_map
def play(self):
self.scene_map.opening_scene.enter()
class Death(Scene):
def enter(self):
pass
class CentralCorridor(Scene):
def enter(self):
print "You've entered the central corridor."
class LaserWeaponArmory(Scene):
def enter(self):
pass
class TheBridge(Scene):
def enter(self):
pass
class EscapePod(Scene):
def enter(self):
pass
class Map(object):
scenes = {
'central_corridor': CentralCorridor(),
'laser_weapon_armory': LaserWeaponArmory(),
'the_bridge': TheBridge(),
'escape_pod': EscapePod()
}
def __init__(self, start_scene):
self.start_scene = start_scene
def next_scene(self, scene_name):
val = Map.scenes.get(scene_name)
return val
def opening_scene(self):
return self.scene_map.opening_scene.enter(self.start_scene)
a_map = Map('central_corridor')
a_game = Engine(a_map)
a_game.play()
실행하면 위의 오류가 발생합니다. 나는 그래서 코드를해야 문제, 당신은 ()
을 사용해야합니다 '놀이'파이썬의 모든 기능을 당신이 그들을, 그들에게 전화 실행하려면 때문에 년대 'opening_scene'
'def play (self) :'내용을'self.scene_map.opening_scene()'으로 바꾸어보세요. 그게 뭐야? – roganjosh
나는 당신이 제안한 것을 대체하고'return self.opening_scene (self.start_scene)'로 바꾼다. 'TypeError : opening_scene()은 정확히 1 개의 인수 (주어진 2 개)' if 'TypeError : opening_scene()은 정확히 2 개의 인수 (주어진 1 개)를받습니다. ' 2 개의 인수를 주면 1 개의 인수가 걸리는 것처럼 보이지만, 1을 주면 2 개의 인수가 필요합니다. – Cdhippen
이러한 변경 사항은 제안하지 않았습니다. 특히'def play (self) :'를 사용하고'self.scene_map.opening_scene.enter()'를'self.scene_map.opening_scene()'으로 대체하십시오. 그 하나가 당신에게주는 변화는 무엇입니까? – roganjosh