文件1:builtins.AttributeError: '海峽' 對象有沒有屬性 '名'
class Rogue():
def __init__(self):
self.name = "Rogue"
Hero.__init__(self.name, None)
'''class Barbarian(Hero):
Hero.__init__(self, name, bonuses)
class Mage(Hero):
Hero.__init__(self, "Mage", bonuses)'''
class Hero(Tile):
'''A class representing the hero venturing into the dungeon.
Heroes have the following attributes: a name, a list of items,
hit points, strength, gold, and a viewing radius. Heroes
inherit the visible boolean from Tile.'''
def __init__(self, name, bonuses=(0, 0, 0)):
'''(Hero, str, list) -> NoneType
Create a new hero with name name,
an empty list of items and bonuses to
hp, strength, gold and radius as specified
in bonuses'''
self.name = name
self.items = []
#Rogue
if self.name == "Rogue":
self.hp = 10 + bonuses[0]
self.strength = 2 + bonuses[1]
self.radius = 2 + bonuses[2]
#Barbarian
elif self.name == "Barbarian":
self.hp = 12 + bonuses[0]
self.strength = 3 + bonuses[1]
self.radius = 1 + bonuses[2]
#Mage
elif self.name == "Mage":
self.hp = 8 + bonuses[0]
self.strength = 2 + bonuses[1]
self.radius = 3 + bonuses[2]
Tile.__init__(self, True)
文件2:
class GameScreen:
'''Display the current state of a game in a text-based format.
This class is fully implemented and needs no
additional work from students.'''
def initialize_game(self):
'''(GameScreen) -> NoneType
Initialize new game with new user-selected hero class
and starting room files.'''
hero = None
while hero is None:
c = input("Select hero type:\n(R)ogue (M)age (B)arbarian\n")
c = c.lower()
if c == 'r':
hero = Rogue()
elif c == 'm':
hero = Mage()
elif c == 'b':
hero = Barbarian()
self.game = Game("rooms/startroom", hero)
有多種不同的文件,但這些都是隻有重要的部分。上面的代碼要求輸入,然後根據輸入調用英雄課程。這個類是我必須創建的部分。我創建了一個Rogue類,我用特定的參數調用Hero。我收到以下錯誤:
File "/Users/Borna/Documents/CSC148/Assignment 2/hero.py", line 7, in __init__
Hero.__init__(self.name, None)
File "/Users/Borna/Documents/CSC148/Assignment 2/hero.py", line 30, in __init__
self.name = name
builtins.AttributeError: 'str' object has no attribute 'name'
我不更改字符串,我只是檢查它是否存在。爲什麼它告訴我該字符串沒有屬性名稱作爲簡單的'self.name'構造函數?
謝謝,這解決了。我忘了第一個參數必須是自己的。 – user1754499
快速後續問題,所以獎金是一個元組(0,0,0),其中獎金[0]是self.hp,獎金[1]是self.strength和獎金[2]是self.radius。對於函數調用,我現在調用Hero .__ init __(self,「Rogue」,我不知道)。我試過使用(0,0,0)和{}作爲第三個參數,但它給了我兩個錯誤。一個說我給了一個太多的參數,另一個說KeyError:0.沒有不可代換的,[]索引超出範圍。我的第三個參數對於將成爲(0,0,0)元組的東西是什麼? – user1754499
正如我所看到的,你有兩個選擇: 英雄.__的init __(自我, 「流氓」) 或 英雄.__的init __(自我, 「流氓」,(0,0,0)) 雙方應該工作。在這兩種情況下,紅利將是(0,0,0) –