python-3.x - 如何使用另一个类引用一个类的属性
问题描述
这是我的代码
import random
class Player_Character:
def __init__(self, hp, maxhp, ac, THAC0):
self.hp = int(hp)
self.maxhp = int(maxhp)
self.ac = int(ac)
self.THAC0 = int(THAC0)
def attack(goblin):
Player_Character_Damage = random.randint(1,10)
goblin.hp -= Player_Character_Damage
if (goblin.hp <= 0):
print("congratulations you killed the goblin")
del goblin
class goblin:
def __init__(self, hp, maxhp, ac, THAC0):
self.hp = int(hp)
self.maxhp = int(maxhp)
self.ac = int(ac)
self.THAC0 = int(THAC0)
def attack(Player_Character):
goblin_damage = random.randint(1,4)
Player_Character.hp -= goblin_damage
if (Player_Character.hp <= 0):
print("oh dear you have died")
del Player_Character
Player_Character(10, 20, 10, 15)
goblin(5, 10, 8, 18)
Player_Character.attack(goblin)
我希望 Player_Character.attack(goblin) 对地精造成 1-10 伤害(可能会杀死它),但我得到一个错误:AttributeError: type object 'goblin' has no attribute 'hp'
......显然我创建了一个带有“hp”属性的类,现在我很困惑。
解决方案
你必须实例化对象
正如@ShadowRanger 在评论中解释的那样,我应该提到我将 self 添加到函数中
import random
class Player_Character:
def __init__(self, hp, maxhp, ac, THAC0):
self.hp = int(hp)
self.maxhp = int(maxhp)
self.ac = int(ac)
self.THAC0 = int(THAC0)
def attack(self, goblin):
Player_Character_Damage = random.randint(1,10)
goblin.hp -= Player_Character_Damage
if (goblin.hp <= 0):
print("congratulations you killed the goblin")
del goblin
class goblin:
def __init__(self, hp, maxhp, ac, THAC0):
self.hp = int(hp)
self.maxhp = int(maxhp)
self.ac = int(ac)
self.THAC0 = int(THAC0)
def attack(self, Player_Character):
goblin_damage = random.randint(1,4)
Player_Character.hp -= goblin_damage
if (Player_Character.hp <= 0):
print("oh dear you have died")
del Player_Character
p = Player_Character(10, 20, 10, 15)
g = goblin(5, 10, 8, 18)
p.attack(g)
@ShadowRanger 还提到 del 不能按预期工作,您可以在外部使用它来删除实例。
p = Player_Character(10, 20, 10, 15)
g = goblin(5, 10, 8, 18)
p.attack(g)
if(g.hp <= 0):
print("congratulations you killed the goblin")
del g
推荐阅读
- minio - 如何从 Kubeflow 中删除工件?
- opc-ua - 如何使用 Milo Stack 调用托管在 OPCUA 服务器中的 OPCUA 方法?
- vba - VBA在标题中插入表格
- r - 在带有 R 闪亮的 selectizeInput 中使用 html
- python - DNA 到蛋白质 | 翻译错误
- python - 无法通过套接字连接将文件上传到服务器(_pickle.UnpicklingError:无效的加载键,'E'。)
- java - 项目反应堆根据条件和聚合结果调用多个api
- r - R 数据框将“列表”类型的列转换为 chr/int/
- c# - 如何在c#中检查数据库字段是否为真
- api - 将日期声明为要用作 API 调用的日期参数的字符串