Программа не видит атрибут класса, хотя он есть
Выдаёт ошибку AttributeError: type object 'Guns' has no attribute 'gun_name' Не понимаю почему, вопроса не нашел, прошу помочь. Заранее прошу прощения, если что-то неправильно написал, пользуюсь сайтом в первый раз.
class Guns:
def __init__ (self,name, power):
self.gun_name = name
self.gun_power = power
def Display_Weapon(self):
print("Оружие - {0}, Урон - {1}".format(self.gun_name, self.gun_power))
class Player:
def __init__(self, health, my_gun):
self.health = health
Guns.my_gun = my_gun
def Display_Player_Info(self):
print("Ваше здоровье = {0}, Ваше оружие - {1} (Урон = {2}".format(self.health, Guns.gun_name, Guns.gun_power))
pistol = Guns("Pistol", 10)
human = Player(30,pistol)
Player.Display_Player_Info(human)
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Вам нужно понять разницу между полями класса и экземпляра класса. Это поле есть у экземпляра класса, а вы пытаетесь обращаться к нему через класс.
Автор решения: gil9red
→ Ссылка
Заметил проблемы в этим местах:
Guns.my_gun = my_gun
print("Ваше здоровье = {0}, Ваше оружие - {1} (Урон = {2}".format(self.health, Guns.gun_name, Guns.gun_power))
Player.Display_Player_Info(human)
С большой буквы Guns и Player, это классы, а не объекты.
Вам нужно создавать объекты и работать с объектами и их полями
Подправил:
class Guns:
def __init__ (self,name, power):
self.gun_name = name
self.gun_power = power
def Display_Weapon(self):
print("Оружие - {0}, Урон - {1}".format(self.gun_name, self.gun_power))
class Player:
def __init__(self, health, my_gun):
self.health = health
self.my_gun = my_gun
# ^^^^^^^^^^^^^^^^^^^^
def Display_Player_Info(self):
print("Ваше здоровье = {0}, Ваше оружие - {1} (Урон = {2}".format(self.health, self.my_gun.gun_name, self.my_gun.gun_power))
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pistol = Guns("Pistol", 10)
human = Player(30,pistol)
human.Display_Player_Info(human)
# ^^^^^^