मैं त्रुटि मिलती है:प्रकार प्रकार की वस्तुओं है कि परिभाषित किया जा रहा है के लिए इशारा
NameError: name 'OrgUnit' is not defined
class OrgUnit(object):
def __init__(self,
an_org_name: str,
its_parent_org_unit: OrgUnit= None
):
self.org_unit_name = an_org_name
self.parent_org_unit = its_parent_org_unit
def __str__(self):
if self.parent_org_unit:
parent_org_unit_name = self.parent_org_unit.__str__()
return parent_org_unit_name + "->" + self.org_unit_name
else:
return self.org_unit_name
if __name__ == '__main__':
ibm_worldwide = OrgUnit("IBM_Worldwide")
ibm_usa = OrgUnit("IBM_USA", ibm_worldwide)
ibm_asia = OrgUnit("IBM_Asia", ibm_worldwide)
ibm_china = OrgUnit("IBM_China", ibm_asia)
print(ibm_worldwide)
print(ibm_usa)
print(ibm_asia)
print(ibm_china)
मुझे यकीन है कि यह एक ज्ञात प्रतिमान है, के रूप में यह एक बहुत आम श्रेणीबद्ध वर्ग उपयोग मुद्दे की तरह लगता है (हूँ एक आत्म संदर्भ वर्ग)। मुझे पता है कि मैं its_parent_org_unit
के प्रकार को object
के रूप में बदल सकता हूं और यह काम करता है, लेकिन ऐसा करने के लिए गलत काम की तरह लगता है, मुख्य रूप से यह मेरी कॉल में प्रकारों की जांच करने की मेरी क्षमता को कम करता है। its_parent_org_unit
के साथ एक प्रकार object
होने के लिए बदल गया है तो सही परिणाम प्राप्त:
IBM_Worldwide
IBM_Worldwide->IBM_USA
IBM_Worldwide->IBM_Asia
IBM_Worldwide->IBM_Asia->IBM_China
मैं विचारों और सुझावों के लिए खुला रहा हूँ। इस तरह की चीज करने के लिए सबसे अधिक "पायथनिक" तरीका क्या है?
पीएस: इस तरह के "स्वयं संदर्भ वर्ग" प्रतिमान/समस्या का नाम क्या है, जिसका उपयोग मैं अन्य सुझावों को देखने के लिए कर सकता था?
कृपया पढ़ें [इस] (http://stackoverflow.com/questions/2489669/function-parameter-types-in-python) और गोता में "बतख टाइपिंग ";) – flaschbier
टस्क, @flaschbier, अगर वह प्रकार संकेतों का उपयोग करना चाहता है, तो उसे चलो। –