Tôi đã có tên tuple sau:Python: Mở rộng một tên tuple xác định trước
from collections import namedtuple
ReadElement = namedtuple('ReadElement', 'address value')
và sau đó tôi muốn những điều sau:
LookupElement = namedtuple('LookupElement', 'address value lookups')
Có sự trùng lặp giữa hai namedtuples, làm thế nào tôi có thể phân lớp ReadElement có chứa một trường bổ sung?
class LookupElement(ReadElement):
def __new__(self, address, value, lookups):
self = super(LookupElement, self).__new__(address, value)
l = list(self)
l.append(lookups)
return tuple(l)
Tuy nhiên các tuple được tạo ra có một sau đó trong tuyên bố mới, nếu tôi sửa đổi bản thân để trở thành một danh sách tôi sẽ mất thông tin loại, làm thế nào tôi có thể tránh điều này?
thats chính xác những gì tôi muốn, nhờ – Har
Đây là những gì các tài liệu khuyên bạn nên làm, nhưng những gì nếu bạn đã có một namedtuple tùy chỉnh với một lĩnh vực được tạo ra? – Ethereal
@Ethereal: tất cả các lớp có tên là tùy chỉnh. Thuộc tính '_fields' sẽ vẫn phản ánh các trường thực tế trên lớp. –