main-Methode in Python

Ich habe den folgenden code, die die folgenden zwei Probleme:

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

Dieser code stammt aus einem tutorial und das tutorial funktioniert es einwandfrei. Ich habe Python 2.7 und verwenden Sie den PyDev plugin für 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()
  • Hören Sie Daniel und blicken auf das @property Dekorateur in Python. Sie müssen nicht zu schreiben, Getter und setter so.
  • Auch nicht mit einem doppelten Unterstrich von Namen -- Sie sind da, für einen ganz bestimmten Anwendungsfall. Wenn Sie möchten, um anzuzeigen, dass eine Eigenschaft "nur für den internen Gebrauch", dann verwenden Sie single-und unterstreicht statt.
  • Auch sollten Sie schreiben class Animal(object):. Der Grund, warum Sie dies tun sollten, ist unwichtig und technische (rückwärts-Kompatibilität mit sehr alten Versionen von Python), und in Python 3.x Sie müssen nicht mehr.
InformationsquelleAutor arnold leki | 2012-01-10
Schreibe einen Kommentar