Tôi tò mò liệu có một cách trong Python để buộc (từ lớp cha) cho một phương thức cha mẹ được gọi từ một lớp con khi nó đang bị ghi đè.Lực lượng lớp con gọi phương thức cha mẹ khi ghi đè nó
Ví dụ:
class Parent(object):
def __init__(self):
self.someValue=1
def start(self):
''' Force method to be called'''
self.someValue+=1
Việc thực hiện chính xác những gì tôi muốn lớp trẻ con tôi làm sẽ là:
class ChildCorrect(Parent):
def start(self):
Parent.start(self)
self.someValue+=1
Tuy nhiên, có một cách để buộc các nhà phát triển mà phát triển các lớp học trẻ em để gọi cụ thể (không chỉ ghi đè) phương thức 'bắt đầu' được xác định trong lớp Cha mẹ trong trường hợp họ quên gọi nó:
class ChildIncorrect(Parent):
def start(self):
'''Parent method not called, but correctly overridden'''
self.someValue+=1
Ngoài ra, nếu điều này không được coi là thực hành tốt nhất, điều gì sẽ là một lựa chọn thay thế?
Phương pháp ghi đè có tự do * khi * nó gọi là siêu không? I E. nó sẽ không sao nếu phương pháp quan trọng bị buộc phải gọi siêu ở đầu hoặc cuối của việc thực hiện nó? (Có lẽ, không được phép hạn chế điều đó trong trường hợp chung.) Nếu có, một metaclass có thể được sử dụng để bọc bất kỳ phương pháp ghi đè nào và ngầm gọi siêu; phương pháp ghi đè sau đó sẽ không được phép gọi siêu chính nó (mà bạn có thể không thực thi được). –
Điều gì về việc gợi ý rằng người dùng nên gọi phương thức siêu lớp, tương tự như cách thiếu phương pháp triển khai phương pháp trừu tượng được chọn với một linter? – pnovotnak