У меня есть класс, который наследует от другого класса, и я получаю вопрос:Python Наследование Проблема
Traceback (most recent call last):
File "main.py", line 45, in <module>
class Player(Entity):
File "main.py", line 53, in Player
self.image = pygame.image.load('sam_stand.png')
NameError: name 'self' is not defined
Эти классы:
class RigidBody(object):
def __init__(self, (x, y), size, mass=1):
self.x = x
self.y = y
self.size = size
self.mass = mass
self.thickness = 0
self.angle = 0
self.drag = 1
self.elasticity = 0.9
class Player(Entity):
"""Player class. Provides all player variables and methods"""
def __init__(self):
RigidBody.__init__(self)
self.grounded = True
self.direction = "Right"
self.axis = "Down"
self.jump_counter = 0
self.image = pygame.image.load('sam_stand.png')
Каким self
признается для всех другие атрибуты для Player
, за исключением self.image
? Если я изменю его на image = pygame.image.load('sam_stand.png')
, проблема исчезнет.
Ваш след не заполнен, вы забыли включить сообщение об исключении. –
с 'RigidBody .__ init __ (self)' вы вызываете конструктор RigidBody, передавая ему ваш текущий объект (т. Е. Экземпляр Player) .... какова ваша цель? – Pynchia
@Pynchia: это совершенно нормальное поведение, вызывая метод родительского класса '__init__', но он * unbound *, поэтому вам нужно явно перейти в' self'. В классах нового стиля, которые будут выполняться с помощью 'super (Player, self) .__ init __()' –