2016-04-12 28 views
-2

'un altında kalıyor. Sadece bt.BT_ON olarak aramam gerek. Miras kavramını kullanmak istemiyorum. Bunu başarabileceğim herhangi bir yol var mı?Python'da yeniyim. Aşağıdaki kodu yaşıyorum. ** Miras kavramı yok **. Sanırım kompozisyon

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() 

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() 

ben aşağıdakileri yaparak çalıştı

, Ama işe yaramadı. "Ebeveyn" e ne koymak gerektiğini tam olarak bilmiyorum.

Araç yöntemlerini BTMGR örneğinin kendisinden kullanmak istiyorum. BTMGR'de yöntemlerin çoğaltılması yok. Eğer BTMGR sınıftan doğrudan sınıfın tool yöntemlerini kullanmak isterseniz

+2

daha anlamlı bir başlık belirtin! – Jan

+1

Lütfen ayrıca sorunuza açıklık getirin. –

+0

Thanks.hope şimdi –

cevap

2

, o zaman başka seçeneğim yok ama onların tanımlarını çoğaltmak:

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

çoğaltma iyi değil ve optimize edilmiş değil mi? –

+1

Gerçekten çoğaltmıyorsunuz, uygulamayı “araca” aktarıyorsunuz, bu iyi bir şey. Sadece kamu arayüzünü kopyalarsınız, alttaki uygulamaya gevşek bir bağlantı sağlarsınız (bu iyi bir şeydir). – poke

+0

Bu durum duruma göre de kabul edilmez. Başka bir yol var mı lütfen bana söyler misiniz? –

İlgili konular