Я, наверное, здесь что-то тупо делаю. Для тех из вас, кто хочет скопировать и вставить, убедитесь, что вы:
from typing import *
Я использую Python 3.7.4.
Это:
class S(FrozenSet[str]):
def __init__(self, strs: Iterable[str], name: str):
super().__init__(strs)
self.name = name
S(['a'], 'a')
вызывает ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: S expected at most 1 arguments, got 2
, но это:
class S(Set[str]):
def __init__(self, strs: Iterable[str], name: str):
super().__init__(strs)
self.name = name
S(['a'], 'a')
выводит нормально:
S({'a'})
Мне нужна дополнительная функциональность набора, но я не хочу, чтобы мои пользователи меняли ее.
РЕДАКТИРОВАТЬ: Я знаю, что могу просто использовать композицию вместо наследования, но было бы неплохо, если бы я мог сделать и эту работу.