class p1(object): pass
class p2(p1): pass
में बी के सुपर क्लास है तो p2 p1 के उपवर्ग है। प्रोग्रामेटिक रूप से पता लगाने का कोई तरीका है कि पी 1 [पी] के सुपरक्लास [es] में से एक है?जांच की जा रही है, तो एक अजगर
class p1(object): pass
class p2(p1): pass
में बी के सुपर क्लास है तो p2 p1 के उपवर्ग है। प्रोग्रामेटिक रूप से पता लगाने का कोई तरीका है कि पी 1 [पी] के सुपरक्लास [es] में से एक है?जांच की जा रही है, तो एक अजगर
हाँ, वहाँ तरीका है। आप issubclass फ़ंक्शन का उपयोग कर सकते हैं।
के रूप में इस प्रकार है:
class p1(object):pass
class p2(p1):pass
issubclass(p2, p1)
मुझे लगता है कि आप "def" के बजाय "वर्ग" का उपयोग करने के लिए होती .. :) वैसे भी, कोशिश p2.__bases__
तुम क्या करने की कोशिश कर रहे हैं क्या के आधार पर, "एमआरओ" विधि भी उपयोगी हो सकता है।
< कक्षा > का उपयोग कर। `Issubclass (ए, ए)` `TRUE` का मूल्यांकन: _ _ ठिकानों _ _ लगता है आप के लिए ...
>>> class p1(object): pass
>>> class p2(p1): pass
>>> p2.__bases__
(<class '__main__.p1'>,)
-1 का उप-समूह है: 'जारी करने वाला' निश्चित रूप से बेहतर समाधान है। – nikow
http://docs.python.org/library/functions.html#issubclass –
@nikow, ठीक है ... लेकिन जारी करने के साथ समस्या() यह है कि इसे कक्षा के साथ तुलना करने की आवश्यकता होती है, जबकि __ आधार __ बस आपको superclass (एस) पूरी तरह से दे। परिस्थितियों के आधार पर दोनों समाधान उपयोगी हो सकते हैं। – Andz
ध्यान दें जो खोज रहे हैं होने के लिए। यह सहज नहीं हो सकता है। कम से कम मेरे लिए, ऐसा लगता है कि एक वर्ग ** ** ** का अपना उप-वर्ग नहीं है। 'issबक्लास 'को' आइसटाइपक्लास 'कहा जाना चाहिए था। – ilmiacs
@limiacs, मेरे लिए जो कक्षाओं को 'सेट' के रूप में सोचते हैं, इससे मुझे परेशान नहीं होता है। ए ए –