Tôi có một lớp, A, được thừa hưởng bởi một loạt các lớp khác. Một số trong số này có một vài chức năng tương tự nhau và sẽ tốt hơn nếu có các hàm được định nghĩa ở một nơi khác và được gọi bởi các lớp cần chúng. Nhưng những hàm này gọi hàm được định nghĩa trong lớp siêu.Python - Có được phép tự chuyển sang chức năng bên ngoài
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)
Vì vậy, tôi đã tạo ra chức năng helper của tôi mà lấy self object
như một cuộc tranh cãi và tôi có thể gọi imp_func
từ bên trong chức năng helper.
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)
Điều này giải quyết được sự cố.
Nhưng tôi có nên làm điều này không? Đây có phải là Pythonic không?
Hoàn toàn không có vấn đề gì với điều đó. 'self' là * chỉ * một tham chiếu đến cá thể, nó không phải là tư nhân hay cũng không nguy hiểm khi truyền nó tới các hàm khác. –
Tại sao bạn cần thực hiện việc này? 'B' thừa hưởng' imp_func' từ 'A', vì vậy bạn có thể gọi' self.imp_func (* args) 'trong' B.common_func' mà không có vấn đề gì. –
@ FlorianBrucker Không chỉ có một hàm, mà một cặp được gọi từ lớp cha và một số được gọi là một vài lần, trong nhiều hàm trong nhiều lớp. Điều này dẫn đến các lớp và chức năng rất cồng kềnh. Nó cũng tốn thời gian để viết những hàm đó. Sử dụng các lớp trợ giúp sẽ tiết kiệm thời gian, công sức và làm cho mã sạch sẽ và dễ bảo trì hơn. – elssar