आशा यह पर्याप्त स्पष्ट है:पायथन: व्युत्पन्न वर्ग से baseclass मान रही
class myParent():
def __init__(self):
self.parentNumber = 5
class Child(myParent):
def __init__(self):
self.childNumber = 4
def multiplyNumbers(self):
print myParent.parentNumber * self.childNumber
p = Child()
p.multiplyNumbers()
मैं व्यक्तिगत रूप से parentNumber स्थापित करने के लिए, और उसके बाद बच्चे कक्षा के माध्यम से उस नंबर तक पहुँचते हैं, और इस मामले में यह कुछ के लिए उपयोग इच्छा गुणन।
मैं ओओपी क्षेत्र में नया हूं इसलिए विरासत पर किसी भी सामान्य संकेतक का भी स्वागत है!
और जानकारी: मैं VFX आधारित परियोजनाओं के लिए एक परियोजना प्रबंधन समाधान डिजाइनिंग रहा हूँ, और देखने के लिए कैसे वे मेरी मदद कर सकते सबसे वर्गों और विरासत के साथ खेल रहा हूँ।
अभी, मुझे शीर्ष श्रेणी, परियोजना, और एक व्युत्पन्न कक्षा, शॉट मिला है। शॉट में विशिष्ट शॉट की लंबाई के साथ एक self.length चर है। इसे getLengthInSeconds() विधि भी मिलती है जो सेकेंड में लंबाई निर्धारित करने के लिए Project.fps के साथ self.length का उपयोग करती है। प्रोजेक्ट में एक setFps() विधि है जिसमें कक्षा के उदाहरण के बाद fps सेट किया गया है।
मैं स्वयं के साथ prefixed चर के लिए उपयोग किया जाता है। और स्वयं के बिना अधिक "वैश्विक" चर का उपयोग कर कक्षाओं के साथ बहुत अधिक प्रयोग नहीं किया है। । अगर मैं सबकुछ वैश्विक बना देता हूं, कोई स्वयं नहीं।, मैं बिना किसी परेशानी के Project.fps का उपयोग कर सकता हूं, लेकिन मुझे अपने गर्दन में "खराब प्रोग्रामिंग अभ्यास" चेतावनी मिल रही है। शायद एक बेहतर, अधिक साफ, रास्ता है?
संपादित करें:
कुछ पढ़ने के बाद, सुपर() थोड़े खतरनाक लगता है, और थोड़ा अधिक की तुलना में मैं मुझे लगता है कि जरूरत है। मेरे पास मुख्य रूप से सिंगल-विरासत कक्षाएं हैं और यह भी सुनिश्चित नहीं है कि डायमंड पदानुक्रमों का उपयोग कैसे किया जाए .. क्या सुपरक्लास वैरिएबल और विधियों तक पहुंचने का कोई सुरक्षित तरीका है जिसमें सुपर() शामिल नहीं है?
संपादित करें:
Allright, देख अगर यह समझ में आता है या अगर मैं यह सब गलत के बारे में सोच रहा हूँ।
मैं कक्षाओं और विरासत समूहों और बच्चों के रूप में देख रहा हूं। एक बच्चा जानता है कि यह माता-पिता और उसके सभी मूल्य हैं। एक बच्चे को दूसरे माता-पिता को पता है कि माता-पिता मूल्यवान हैं। जो मैं पूरा करने की कोशिश कर रहा हूं वह सभी शॉट्स को एक परियोजना का हिस्सा बन रहा है। और अभी, मैं प्रोजेक्ट() कक्षा के भीतर से शॉट() उदाहरण बना रहा हूं, उदाहरणों को परियोजनाओं() उदाहरण के भीतर बनाए गए शॉट्स की सूची में उदाहरण जोड़ रहा हूं।
यानी
class myParent(object):
def __init__(self):
self.parent_id = ''
self.children = []
def createChild(self, name):
self.children.append(myChild(name))
def getChildren(self):
return self.children
def setParentId(self, id):
self.parentId = id
class myChild(myParent):
def __init__(self, id):
super(myChild, self).__init__()
self.id = id
def getParentId(self):
return self.parent_id
p = myParent()
p.setParentId('parent01')
p.createChild('child01')
print p.getChildren()[0].getParentId()
मैं इन सबसे छुटकारा तर्क यहाँ में गलत कदम, लेकिन यह चारों ओर कोई असली तरीका देख सकते हैं .. लगता है जैसे हर बच्चे को माता-पिता का एक नया उदाहरण इस तरह से हो रही है जहां, parent_id हमेशा एक खाली स्ट्रिंग है।
आप सुपर क्लास निर्माता कॉल करने के लिए की जरूरत है। –