Tôi cố gắng để hiểu khi nào và làm thế nào để sử dụng siêu() trong Python một cách chính xác (hoặc 2.7.x hoặc 3.x)Đối số siêu() của Python: tại sao không siêu (obj)?
trên >>> help(super)
người phiên dịch nói với tôi làm thế nào để gọi nó là:
class super(object)
| super(type) -> unbound super object
| super(type, obj) -> bound super object; requires isinstance(obj, type)
| super(type, type2) -> bound super object; requires issubclass(type2, type)
Tôi hiểu rằng trong Python3.x nó bây giờ có thể sử dụng siêu() trong một định nghĩa lớp, nhưng tôi không hiểu tại sao super(obj)
là không thể. Hoặc super(self)
trong định nghĩa lớp.
Tôi biết phải có lý do, nhưng tôi không thể tìm thấy. Với tôi những dòng này tương đương với super(obj.__class__, obj)
hoặc super(self.__class__, self)
và những dòng đó sẽ hoạt động đúng không?
Tôi nghĩ rằng chỉ cần gõ super(obj)
sẽ là một lối tắt đẹp ngay cả trong Python 3.x.
Tôi sẽ nói rằng nó sẽ gây ra sự mơ hồ khi bạn gọi 'siêu' trên một metaclass, nhưng sau đó tôi nhận ra rằng sự mơ hồ cũng tồn tại với dạng 2-đối số. Bây giờ tôi không chắc chắn. – user2357112