إن شاء subclasses ترث في بيثون
-
06-07-2019 - |
سؤال
هل من الممكن فئة فرعية حيوي؟ أعرف أن هناك من ____bases____ لكنني لا أريد أن تأثير كل مثيلات الفئة. أريد CF الكائن إلى تعدد الأشكال في mixin الطبقة DrvCrystalfontz. وعلاوة على ذلك في التسلسل الهرمي فئة فرعية من gobject التي تحتاج إلى تكون متاحة على هذا المستوى لتوصيل الإشارات، والحل أدناه غير كافية.
class DrvCrystalfontz:
def __init__(self, model, visitor, obj=None, config=None):
if model not in Models.keys():
error("Unknown Crystalfontz model %s" % model)
return
self.model = Models[model]
if self.model.protocol == 1:
cf = Protocol1(self, visitor, obj, config)
elif self.model.protocol == 2:
cf = Protocol2(self, visitor, obj, config)
elif self.model.protocol == 3:
cf = Protocol3(self, visitor, obj, config)
for key in cf.__dict__.keys():
self.__dict__[key] = cf.__dict__[key]
المحلول
ولست متأكدا أنا واضح على استخدام المطلوب هنا، ولكن من الممكن إلى فئة فرعية بشكل حيوي. يمكنك استخدام الكائن type
لبناء حيوي فئة معينة اسما، الصفوف (tuple) من الفئات الأساسية وديكت أساليب / سمات الطبقة، على سبيل المثال:
>>> MySub = type("MySub", (DrvCrystalfontz, some_other_class),
{'some_extra method' : lamba self: do_something() })
وMySub هو الآن فئة فرعية من andDrvCrystalfontz
some_other_class
، يرث أساليبها، ويضيف واحدة جديدة ( "some_extra_method
").
لا تنتمي إلى StackOverflow