2016-04-12 7 views
-2

Ich habe den folgenden Code. Ich muss nur als bt.BT_ON aufrufen. Ich möchte das Vererbungskonzept nicht anwenden. Kann ich es irgendwie erreichen?Ich bin neu bei Python. Ich habe den folgenden Code. ** Kein Vererbungskonzept **. Ich denke, Zusammensetzung hilft

from __future__ import print_function 
class tool(object): 
    def BT_ON(self): 
     print("BT on") 
    def WIFI_ON(self): 
     print("WIFI on") 
class BTMGR(object): 
    def __init__(self): 
     self.tl = tool() 

bt=BTMGR() 
bt.BT_ON() 

Ich habe versucht folgende tun,

class tool(object): 
    def __init__(self,parent): 
     print(parent) 
     self.parent=parent 
    def BT_ON(self): 
     print("BT on") 
    def WIFI_ON(self): 
     print("WIFI on") 
class BTMGR(object): 
    def __init__(self): 
     self.tl = tool(self) 
class WIFIMGR(object): 
    def __init__(self): 
     self.tool = tool() 

bt=BTMGR() 
bt.BT_ON() 

Aber es hat nicht funktioniert. Ich weiß nicht genau, was ich "Eltern" nennen soll.

Ich möchte die Methoden von Tool aus der Instanz von BTMGR selbst verwenden. Keine Duplizierung von Methoden in BTMGR.

+2

Bitte geben Sie einen aussagekräftigen Titel! – Jan

+1

Bitte klären Sie auch Ihre Frage. –

+0

Thanks.hope jetzt klärt es –

Antwort

2

Wenn Sie die Methoden der Klasse tool direkt von Ihrem BTMGR Klasse verwenden möchten, dann haben Sie keine andere Wahl, als ihre Definitionen duplizieren:

class BTMGR(object): 
    def __init__(self): 
     self.tl = tool(self) 
    def BT_ON(self): 
     self.tl.BT_ON() 

class WIFIMGR(object): 
    def __init__(self): 
     self.tool = tool() 
    def WIFI_ON(self): 
     self.tool.WIFI_ON() 

bt = BTMGR() 
bt.BT_ON() 

wf = WIFIMGR() 
wf.WIFI_ON() 
+0

Duplizieren ist nicht gut und nicht optimiert, oder? –

+1

Sie vervielfältigen es nicht wirklich, Sie delegieren die Implementierung an Ihr 'Werkzeug', das ist also gut. Sie duplizieren nur die öffentliche Schnittstelle und stellen eine lose Kopplung zur zugrunde liegenden Implementierung bereit (das ist eine gute Sache). – poke

+0

Dies wird auch nicht gemäß der Situation akzeptiert. Kann mir bitte sagen, ob es anders geht? –

Verwandte Themen