Khi tạo một hệ thống phân cấp đối tượng đơn giản trong Python, tôi muốn có thể gọi các phương thức của lớp cha từ một lớp dẫn xuất. Trong Perl và Java, có một từ khóa cho cái này ( super
). Ở Perl, tôi có thể làm điều này:
package Foo;
sub frotz {
return "Bamf";
}
package Bar;
@ISA = qw(Foo);
sub frotz {
my $str = SUPER::frotz();
return uc($str);
}
Trong Python, có vẻ như tôi phải đặt tên lớp cha rõ ràng từ đứa trẻ. Trong ví dụ trên, tôi phải làm một cái gì đó như Foo::frotz()
.
Điều này có vẻ không đúng vì hành vi này khiến cho việc phân cấp sâu trở nên khó khăn. Nếu trẻ em cần biết lớp nào định nghĩa một phương thức kế thừa, thì tất cả các loại đau thông tin được tạo ra.
Đây có phải là một giới hạn thực sự trong python, một khoảng cách trong sự hiểu biết của tôi hoặc cả hai?