2013-04-18 36 views
18

我有一個類A,它由一堆其他類繼承。其中一些有幾個相似的功能,將這些功能定義在其他地方並由需要它們的類調用將會很好。但是這些函數調用超類定義的函數。Python - 是否可以將自我傳遞給外部函數

class A(): 
    def imp_func(*args): 
     # called by the child class functions 

Class B(A): 
    def common_func(self): 
     # some stuff 
     self.imp_func(*args) 

所以我創建了採取self object作爲參數我的輔助功能,我可以從輔助函數中調用imp_func

def helper_func(obj, some_args): 
    # some common stuff 
    obj.imp_func(*args) 

class B(A): 
    def common_func(self): 
     # unique stuff 
     helper_func(self, some_args) 

這就解決了這個問題。

但是我應該這樣做嗎?這是Pythonic嗎?

+3

這絕對沒有問題。 'self'只是對實例的引用,它不是私有的,將它傳遞給其他函數也是危險的。 –

+3

你爲什麼需要這樣做? 'B'從'A'繼承'imp_func',所以你可以在'B.common_func'中調用'self.imp_func(* args)'。 –

+0

@FlorianBrucker不只是一個函數,而是一對從父類調用的對象,有些被稱爲幾次,在多個類中有多個函數。這導致了非常臃腫的類和函數。編寫這些函數也很耗時。使用助手類將節省時間和精力,並使代碼更乾淨,更易於維護。 – elssar

回答

24

這是沒有問題的。 self的實例總是被傳遞給函數(以及其他類的方法)。

相關問題