Sau khi nạp list vào constructor, lúc in ra kết quả chỉ thu được list rỗng

Mình có đoạn code này:

Tại sao lúc print(lines) sau khi gọi lines_type(lines) lại in ra list rỗng?

Vì kế thừa từ class list

class lines_type(list):

Nên nó sẽ trả về một list rỗng.
Nhưng những thuộc tính của anh vẫn sẽ được bảo toàn.
Nó giống như anh viết thêm một số thuộc tính cho một cái List object thôi. Tuy vậy, Type của nó vẫn là class của anh.

1 Like

Có cách nào để nó không trả về list rỗng không?

Ta có thể làm như thế này

class lines_type(list):
    def __init__(self, lines):
        list.__init__(self, lines[:])
2 Likes

Nó không in ra chuỗi rỗng nữa, nhưng không gọi được method .print_all_lines().

Em mới nghĩ ra cách

for u in self:

Nhưng mà có thể nó bóp mấy phần sau nên đang suy nghĩ thêm.

Theo em nghĩ, khi kế thừa từ List thì self nó đã là một List, không cần phải đưa cái list đó thành một attribute mới. Còn nếu muốn mới thì không kế thừa từ List.

1 Like

OK, anh sẽ xem lại cả code xem có cần bỏ kế thừa từ List hay không. Cảm ơn em nha.

Có lẽ không bỏ kế thừa được rồi. Anh còn dùng cả indexing nữa. Nếu bỏ thì lỗi ngay.

Nếu vậy thì đừng dùng attribute để lưu một cái List.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?