Subclassing#
Starting with version 0.2.1., subclassing easytree.dict
and easytree.list
classes is possible.
Attention
The only requirement is to keep the signature of the __init__
method unchanged in your subclass. You may amend the actual method, but the signature should remain the same.
>>> import easytree
>>> class Person(easytree.dict):
... def __init__(self, *args, sealed=False, frozen=False, **kwargs):
... super().__init__(*args, sealed=sealed, frozen=frozen, **kwargs)
...
... def greet(self):
... return f"Hello, my name is {self.firstname}"
>>> class Group(easytree.list):
... def def __init__(self, args=None, *, sealed=False, frozen=False):
... super().__init__(args, sealed=sealed, frozen=frozen)
...
... @property
... def eldest(self):
... return sorted(self, key=lambda person: person.age)[-1]
>>> group = Group(
... [
... Person(firstname="Sally",lastname="S", age=35),
... Person(firstname="Alice",lastname="G", age=32)
... ],
... frozen=True
... )
>>> group.eldest.greet()
'Hello, my name is Sally'
>>> easytree.frozen(group[0])
True