tengo el siguiente código, que tiene los dos problemas siguientes:principal método en Python
Traceback (most recent call last):
File "C:\Users\v\workspace\first\src\tests.py", line 1, in <module>
class Animal:
File "C:\Users\v\workspace\first\src\tests.py", line 39, in Animal
File "C:\Users\v\workspace\first\src\tests.py", line 31, in main
dog = Animal()
NameError: global name 'Animal' is not defined
Este código es de un tutorial, y en el tutorial que trabaja muy bien. Tengo el Python 2.7 y uso el complemento PyDev para Eclipse.
class Animal:
__hungry = "yes"
__name = "no name"
__owner = "no owner"
def __init__(self):
pass
def set_owner(self,newOwner):
self.__owner= newOwner
return
def get_owner(self):
return self.__owner
def set_name(self,newName):
self.__name= newName
return
def get_name(self):
return self.__name
def noise(self):
print('errr')
return
def __hiddenmethod(self):
print("hard to find")
def main():
dog = Animal()
dog.set_owner('Sue')
print dog.get_owner()
dog.noise()
if __name__ =='__main__':main()
¿Puede proporcionar un enlace a ese tutorial? Quienquiera que lo haya escrito debe recibir un disparo, o al menos debe dejar de escribir. Esa es * no * la forma de escribir las propiedades de la clase en Python. –
Escucha a Daniel y busca el decorador '@ property' en Python. No tiene que escribir getters y setters así. – katrielalex
Además, no utilice nombres de subrayado doble; están ahí para un caso de uso muy particular. Si desea indicar que una propiedad es "solo para uso interno", utilice en su lugar subrayado único. – katrielalex