Так что мне нравится использовать attr, но иногда мне нужно заниматься своим делом. можно переопределить метод __init__
своим?
import attr
@attr.s(auto_attribs=True)
class MyClass:
i: int
def __init__(self, i, special=None):
if special:
self.i = special
else:
self.i = i
>>> a = MyClass(i=1,special=2)
Traceback (most recent call last):
File "<input>", line 1, in <module>
a = MyClass(i=1,special=2)
TypeError: __init__() got an unexpected keyword argument 'special'
Другой пример:
@attr.s(auto_attribs=True)
class MyOtherClass:
i: int
def __init__(self, i, **kwargs):
self.i = kwargs.get('magic',i)
>>> a = MyOtherClass(i=5,magic=12)
Traceback (most recent call last):
File "<input>", line 1, in <module>
a = MyOtherClass(i=5,magic=12)
TypeError: __init__() got an unexpected keyword argument 'magic'