What is difference between `__init__(...) -> Self` vs `__init__(inout self, ...)`? - Modular