2012-05-23 12 views
19

Próbuję odświeżyć swoje umiejętności Pythona, a ja piszę z pisania klas, ale wydaje mi się, że wpadł w naprawdę mylący błąd. Pomimo importowania pliku .py zawierającego moją klasę, Python nalega, aby klasa faktycznie nie istniała.klasa nie została zdefiniowana pomimo, że została zaimportowana

klasy def:

class greeter: 
    def __init__(self, arg1=None): 
     self.text = arg1 

    def sayHi(self): 
     return self.text 

main.py:

#!/usr/bin/python 
import testclass 

sayinghi = greeter("hello world!") 
print sayinghi.sayHi() 

teraz o ile mogę powiedzieć, Śledzę całą dokumentację w dół do 'T', nawet zainicjowany argumenty to None ze względu na eval time vs ograniczenia czasu tworzenia itd., które wydawało się być problemem z niektórymi ludźmi, upewniłem się, żeinitjest pierwszą funkcją zdefiniowaną, jak również nadal bezskuteczną, chociaż mam teorię, że import nie jest działa tak jak powinien .... Każda pomoc byłaby bardzo cenna.

Odpowiedz

27

używać nazwy w pełni kwalifikowanej:

sayinghi = testclass.greeter("hello world!") 

Jest alternatywną formą import że przyniesie greeter do przestrzeni nazw:

from testclass import greeter 
13
import testclass 
# change to 
from testclass import greeter 

lub

import testclass 
sayinghi = greeter("hello world!") 
# change to 
import testclass 
sayinghi = testclass.greeter("hello world!") 

Zaimportowałeś moduł/pakiet, ale musisz odwołać się do klasy w nim zawartej.

Można też to zrobić zamiast

from testclass import * 

ale wtedy uważaj namespace pollution

Powiązane problemy