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嗎?
這絕對沒有問題。 'self'只是對實例的引用,它不是私有的,將它傳遞給其他函數也是危險的。 –
你爲什麼需要這樣做? 'B'從'A'繼承'imp_func',所以你可以在'B.common_func'中調用'self.imp_func(* args)'。 –
@FlorianBrucker不只是一個函數,而是一對從父類調用的對象,有些被稱爲幾次,在多個類中有多個函數。這導致了非常臃腫的類和函數。編寫這些函數也很耗時。使用助手類將節省時間和精力,並使代碼更乾淨,更易於維護。 – elssar