Skip to content

Instantly share code, notes, and snippets.

@mnogom
Last active July 31, 2023 17:13

Revisions

  1. mnogom revised this gist Jul 31, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion forbid-children-method-extending.py
    Original file line number Diff line number Diff line change
    @@ -10,4 +10,4 @@ def __init_subclass__(cls, **kwargs):
    raise CellCantHasExtraFieldException(
    f"Нельзя расширять класс. Дополнительные поля: {extra_dir}"
    )
    return super().__init_subclass__(**kwargs)
    return super().__init_subclass__(**kwargs)
  2. mnogom created this gist Jul 31, 2023.
    13 changes: 13 additions & 0 deletions forbid-children-method-extending.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,13 @@
    class Parent
    ...

    @classmethod
    def __init_subclass__(cls, **kwargs):
    dir_subclass = set(field for field in dir(cls) if not field.startswith(f"_{cls.__name__}__"))
    dir_base = set(field for field in dir(cls.__base__))
    extra_dir = dir_subclass.difference(dir_base)
    if extra_dir:
    raise CellCantHasExtraFieldException(
    f"Нельзя расширять класс. Дополнительные поля: {extra_dir}"
    )
    return super().__init_subclass__(**kwargs)