2016-04-12 21 views
-3

Ben programlamada yeniyim tanımlı değil ve ben bir cevap bulamıyorum hangi bir sorun ile karşı karşıya kaldılar:Python 3: NameError: adı 'functionName' Yani burada öyle ...

`class MyClass: 
    def printsmth(): 
     print("Hello") 
    def main(): 
     printsmth() 
    if __name__ == '__main__':main()` 

şeklinde bir hata mesajı alıyorum:

Traceback (most recent call last): 
    File "untitled.py", line 1, in <module> 
    class MyClass: 
    File "untitled.py", line 6, in MyClass 
    if __name__ == '__main__':main() 
    File "untitled.py", line 5, in main 
    printsmth() 
NameError: name 'printsmth' is not defined 

Kod dahil

sadece bir örnektir, ama örneğin ben (ana gelen kodumu devredilmesini sağlayacak eğer ettiyseniz), benim gerçek kod üzerinde olsun aynı hatayı olduğu ad == ' main' işe yaramıyor erfectly. Sorun şu ki, kodun bazı bölümlerinde main() yöntemini yeniden başlatmak istiyorum ama buna bile gitmedim çünkü bu hatayı bir çözüm olarak düşünemiyorum:/Bana yardım edebilir misiniz?

P.S. Hareket etmeye çalıştı ana() ve eğer adı == Sınıfım gelen 'ana' ve işe yaradı vermedi.

+0

https://docs.python.org/2/tutorial/classes.html#python-scopes-and-namespaces - (bu durumda kapsamları) esansiyel Python kavramları tanımak gerekir. –

+2

Java'yı python'a yazmaya çalışıyor gibi görünüyor. Bir 'sınıf' içindeki ilişkisiz işlevler için düşünebilmemin tek nedeni budur. Daha fazla açıklama için binlerce kişinin herhangi bir python eğitimini takip edin. –

cevap

0

self yöntemlerinizi ilk parametresi olarak geçmeyi unutuyorsunuz. Bunu yaptıktan sonra, bir yöntem olarak self.printsmth()'u arayabilirsiniz. Şimdi şaşkın çünkü onu bir yöntem yerine bir işlev olarak çağırıyorsun.

class MyClass: 
    def printsmth(self): 
     print("Hello") 
    def main(self): 
     self.printsmth()