tôi đã tạo ra một lớp cơ sở:Làm thế nào để mở rộng Python lớp init
class Thing():
def __init__(self, name):
self.name = name
Tôi muốn mở rộng các lớp và thêm vào init phương pháp nên rằng SubThing
có cả một name
và một tài sản time
. Tôi phải làm nó như thế nào?
class SubThing(Thing):
# something here to extend the init and add a "time" property
def __repr__(self):
return '<%s %s>' % (self.name, self.time)
Mọi trợ giúp đều tuyệt vời.
Cũng thay vì tham chiếu 'SubThing' trong' super', bạn có thể làm 'super (self .__ class__, self) .__ init __ (* args, ** kwargs)'. Điều này cũng làm việc với các lớp được tạo động bằng cách sử dụng 'type()'. – miki725
Tôi nhận được lỗi này với một trong các giải pháp sau: 'TypeError: phải là loại, không phải classobj' - lỗi được kích hoạt bởi siêu dòng của tôi. – TheChymera
@TheChymera nhìn vào những gì Jesse đã viết: "Hãy chắc chắn rằng bạn có lớp con cơ sở của bạn từ đối tượng, vì siêu sẽ không hoạt động với các lớp kiểu cũ" – Acsisr