gpt4 book ai didi

python - 内置属性错误: 'str' object has no attribute 'name'

转载 作者:行者123 更新时间:2023-12-01 05:55:10 27 4
gpt4 key购买 nike

文件1:

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//Documents/CSC148/Assignment 2/hero.py", line 7, in __init__
Hero.__init__(self.name, None)
File "/Users//Documents/CSC148/Assignment 2/hero.py", line 30, in __init__
self.name = name
builtins.AttributeError: 'str' object has no attribute 'name'

我不会更改字符串,我只是检查它是否存在。为什么它告诉我 string 对于简单的“self.name”构造函数没有属性名称?

最佳答案

当你这样做时会发生什么

Hero.__init__(self.name, None)

是“self”参数没有作为第一个参数隐式传递。因此,在这种情况下,您实际上传递一个字符串(self.name)作为第一个参数(而不是 self),并传递 None 而不是“name”参数。如果“bonuses”不是关键字参数,则此调用将产生 TypeError: __init__() 恰好需要 3 个参数(给定 2 个)

所以:self.name 代表 selfNone 代表名称并且奖金被初始化为默认值 (0, 0, 0)

关于python - 内置属性错误: 'str' object has no attribute 'name' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943297/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com