Wie auf Class im __init__ einer anderen Class zugreifen ???

  • Hallo


    Ich überschreibe in einem Plugin die SeekActions der Class "InfoBarSeek" aus der InfoBarGenerics.py mit zusätzlichen Tasten.
    Allerdings benötige ich für das neue Festlegen bei self["SeekActions"] = InfoBarSeekActionMap(self, actionmap,… die Class "InfoBarSeekActionMap" aus der InfoBarSeek.__init__.
    LINK


    Bisher habe ich mir die Class in meinen Code kopiert, was auch funktioniert.
    Schöner wäre es jedoch, wenn man direkt auf die Original-Class aus der __init__ vom InfoBarSeek verweisen könnte mit Import oder so.


    Also wie kann man die Class "InfoBarSeekActionMap" innerhalb des __init__ der Class InfoBarSeek im eigenen Code verwenden/ansprechen ?


    So hat es leider nicht funktioniert :winking_face:
    ('function' object has no attribute 'InfoBarSeekActionMap')

    Python
    from Screens.InfoBarGenerics import InfoBarSeek
    self["SeekActions"] = InfoBarSeek.__init__.InfoBarSeekActionMap(self, actionmap,…

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    2 Mal editiert, zuletzt von Sven H ()

  • ich wage mal einen schuss aus der huefte...


    Python
    from Screens.InfoBarGenerics import InfoBarSeek, InfoBarSeekActionMap
    InfoBarSeek.__init__()
    self["SeekActions"] = InfoBarSeekActionMap(self, actionmap,…
  • Nochmal vielleicht zum besseren Verständnis.
    In der Class "InfobarSeek" befindet sich im "__init__" noch eine Class "InfoBarSeekActionMap".

    Python
    def InfoBarSeek__init__(self, actionmap = "InfobarSeekActions"):
    ...
        def __init__(self, actionmap = "InfobarSeekActions"):
           ...
           class InfoBarSeekActionMap(HelpableActionMap):
    		def __init__(self, screen, *args, **kwargs):
                      ...
           self["SeekActions"] = InfoBarSeekActionMap(self, actionmap,...

    nun habe ich die Class InfobarSeek im eigenen Code überschrieben, um die Tastenbelegungen anzupassen, was auch funktioniert.
    Dabei habe ich aber den Code der Class InfoBarSeekActionMap aus dem __init__ komplett übernommen (22 Code-Zeilen).

    Python
    def InfoBarSeek__init__(self, actionmap = "InfobarSeekActions"):
        baseInfoBarSeek__init__(self, actionmap)
    
    
        class InfoBarSeekActionMap(HelpableActionMap):
    	def __init__(self, screen, *args, **kwargs):
            ...
        self["SeekActions"] = InfoBarSeekActionMap(self, actionmap,...

    Ich hatte mir nun gedacht, die Class "InfoBarSeekActionMap" hier irgendwie per Import oder so in meinen Code zu bekommen, ohne die ganze Class nochmal nachbilden zu müssen. Sie ist ja irgendwie im baseInfoBarSeek__init__ enthalten.

    Python
    def InfoBarSeek__init__(self, actionmap = "InfobarSeekActions"):
        baseInfoBarSeek__init__(self, actionmap)
    
    
        from baseInfoBarSeek__init__ import InfoBarSeekActionMap
    
    
        self["SeekActions"] = InfoBarSeekActionMap(self, actionmap,...


    Leider habe ich dafür noch keine passende Codezeile gefunden :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Hm das ist keine globale Klassendefinition ich glaub nicht dass man die "importieren" kann. Die packt man ja im Prinzip auch da rein weil sie nur da drin gebraucht wird.

  • Ok, wenn dass so ist, dann kann ich damit auch leben :winking_face:


    Wollte nur mal fragen, ob man den Code da vereinfachen könnte und nicht unnötig eine Class nachbildet.
    Zumal die Class ja im baseInfoBarSeek__init__() enthalten ist und ja auch ausgeführt wird.


    Da war meine Hoffnung, man kommt an die Class mit irgendeiner cleveren Codezeile ran :winking_face:
    Aber da fehlt es mir noch etwas am Verständnis für diese Geschichten.

    Code
    baseInfoBarSeek__init__.InfoBarSeekActionMap
    baseInfoBarSeek__init__.__class__InfoBarSeekActionMap
    baseInfoBarSeek__init__.__InfoBarSeekActionMap

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP