Hãy xem xét một lớp học với một phương pháp "private" như:override phương pháp "private" bằng Python
class Foo(object):
def __init__(self):
self.__method()
def __method(self):
print('42')
Khi tôi cố gắng phân lớp Foo
và phương pháp ghi đè __method
, nó có thể được nhìn thấy rằng Foo.__method
vẫn gọi, thay vì MoreFoo.__method
.
class MoreFoo(Foo):
def __method(self):
print('41')
>>> MoreFoo()
42
<__main__.MoreFoo object at 0x7fb726197d90>
Cách nào để ghi đè phương pháp như vậy?
http://stackoverflow.com/questions/1301346/the-meaning-of-a-single-and-a-double-underscore-before-an-object-name-in-python – tacaswell
Không quan tâm, ở đâu bạn có nhận được ý tưởng rằng điều này tương đương với một biến riêng tư không? Đó là một quan niệm sai lầm thực sự tồi tệ, và tôi thấy nó mọi lúc mà không biết nó đến từ đâu. –
@Lattyware - Tôi nghĩ rằng nó xuất phát từ phần trên các tài liệu có tên là "Biến riêng tư và Tham chiếu lớp địa phương". Nó tiếp tục nói rằng không có biến riêng ... nhưng điều nhấn kép là gần nhất bạn có thể nhận được - "Vì có một trường hợp sử dụng hợp lệ cho các thành viên lớp riêng (cụ thể là để tránh xung đột tên của tên với các tên được xác định bởi các lớp con), có sự hỗ trợ giới hạn cho một cơ chế như vậy, ... " – mgilson