Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Lớp cơ sở trừu tượng (Abstract Base Classes) cho Container trong Python

Có một số lớp cơ sở trừu tượng (Abstract Base Classes - ABC) cho các container (chứa đựng) của Python. Có nhiều ABC khác nhau. Các lớp này như Container, Hashable, Generator, Set, MutableSet, Awaitable, v.v.

Để dùng module này, nên nhập bằng:

import collections.abc

Một số Abstract Base Classes rất hữu ích. Các lớp này dùng để phát triển các lớp container khác nhau. Ví dụ, ta có thể tạo một container có đầy đủ chức năng của Set. Để làm vậy, ta dùng Abstract Base Class Set. Ta cần cung cấp một số phương thức trong lớp của mình: __contains__(), __iter__() và __len__().

Mã ví dụ

import collections.abc

class ListSet(collections.abc.Set):
    def __init__(self, iterable):
        self.elements = lst = list()
        for element in iterable:
            if element not in lst:
                lst.append(element)
    def __iter__(self):
        return iter(self.elements)
    def __contains__(self, value):
        return value in self.elements
    def __len__(self):
        return len(self.elements)

set1 = ListSet('ABCDEF')
set2 = ListSet('DEFGHI')
intersect = set1 & set2
intersect_iter = iter(intersect)
try:
    while True:
        print(next(intersect_iter))
except:
    pass

Kết quả

D
E
F