python initialization attributeerror

Python-TypeError: método independiente



initialization attributeerror (2)

Primero, use siempre clases de estilo nuevo, es decir, herede del object . (Esto no es necesario si está ejecutando Python 3, que tiene solo clases de estilo nuevo)

En segundo lugar, es muy probable que invocar __init__ sea ​​incorrecto: si desea instanciar un nuevo objeto, simplemente escriba Object(x, y, char, color) .

Así que este problema de Python me ha estado ocasionando problemas ya que intenté refactorizar el código en diferentes archivos. Tengo un archivo llamado object.py y en él, el código relacionado es:

class Object: #this is a generic object: the player, a monster, an item, the stairs... #it''s always represented by a character on screen. def __init__(self, x, y, char, color): self.x = x self.y = y self.char = char self.color = color def move(self, dx, dy): #move by the given amount, if the destination is not blocked #if not map[self.x + dx][self.y + dy].blocked: self.x += dx self.y += dy

Ahora, cuando intento compilar este archivo específicamente, aparece este error:

TypeError: unbound method __init__() must be called with Object instance as first argument (got int instance instead)

El código que intenta llamar a esto es:

player = object_info.Object.__init__(BurglaryConstants.SCREEN_WIDTH/2, BurglaryConstants.SCREEN_HEIGHT/2, ''@'', libtcod.white)

Lo que causa este error al compilar:

AttributeError: ''module'' object has no attribute ''Object''

Entonces, ¿qué diablos está pasando con todo esto y cómo debería estar refactorizando esto? También supongo que tener una clase llamada Object no es una buena práctica de codificación, ¿correcto?

¡Gracias por tu ayuda!


Actualizar

Está definiendo Object en un archivo llamado object.py . Y, sin embargo, el cliente se refiere a object_info.Object . ¿Es esto un error tipográfico?

También supongo que tener una clase llamada Object no es una buena práctica de codificación, ¿correcto?

Correcto. Cambie el nombre de su clase a otra cosa, digamos GenericObject o GenericBase . Además, no use el nombre del módulo object.py . Cambiarlo apropiadamente.

también

Estás construyendo una instancia de Object pero la forma en que lo haces es incorrecta. Prueba esto:

player = object_info.Object(BurglaryConstants.SCREEN_WIDTH/2, BurglaryConstants.SCREEN_HEIGHT/2, ''@'', libtcod.white)

Este capítulo de Dive Into Python debería ser útil.