2012-05-23 20 views
19

मैं अपने पायथन कौशल पर ब्रश करने की कोशिश कर रहा हूं, और मैं कक्षाओं के लेखन के साथ चारों ओर डिक कर रहा हूं लेकिन मुझे लगता है कि वास्तव में भ्रमित त्रुटि में भाग लिया है। मेरी कक्षा वाली .py फ़ाइल आयात करने के बावजूद, अजगर जोरदार है कि कक्षा वास्तव में मौजूद नहीं है।कक्षा आयातित होने के बावजूद परिभाषित नहीं किया गया है

वर्ग डीईएफ़:

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() 
अब

जहाँ तक मैं बता सकता हूँ, मैं 'टी' के लिए नीचे सभी दस्तावेज़, मैं भी initialized तर्क का पालन किया है किसी भी व्यक्ति के साथ किसी भी समस्या के कारण eval समय बनाम निर्माण समय बाधाओं आदि के कारण, मैंने सुनिश्चित किया है कि init पहला फ़ंक्शन परिभाषित किया गया है, साथ ही इसका कोई फायदा नहीं हुआ है, हालांकि मेरे पास एक सिद्धांत है कि आयात नहीं है काम करना चाहिए .... कोई भी सहायताकाफी प्रशंसनीय होगी।

उत्तर

27

उपयोग पूरी तरह से योग्य नाम:

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

import का एक वैकल्पिक रूप है कि अपने नाम स्थान में greeter लाना होगा नहीं है:

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

या

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

आपने मॉड्यूल/पैकेज आयात किया है, लेकिन आपको इसके अंदर के वर्ग को संदर्भित करने की आवश्यकता है।

इस बजाय

from testclass import * 

कर सकता है, लेकिन फिर namespace pollution

से सावधान
संबंधित मुद्दे