سؤال

هل من الممكن فئة فرعية حيوي؟ أعرف أن هناك من ____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").

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top