Алмаз Сейтхазин (КФ МГУ, кафедра НДС) MetaPosition 10159
david_Yakhin_312 MetaPosition 9645
t1class positioned(type):t1class positioned(type):
22
3    def __new__(cls, name, bases, namespace):3    def __new__(cls, name, bases, namespace):
4        annotations = namespace.get('__annotations__', {})4        annotations = namespace.get('__annotations__', {})
5        fields = list(annotations.keys())5        fields = list(annotations.keys())
6        namespace['__match_args__'] = tuple(fields)6        namespace['__match_args__'] = tuple(fields)
77
8        def __init__(self, *args):8        def __init__(self, *args):
9            for field, value in zip(fields, args):9            for field, value in zip(fields, args):
10                setattr(self, field, value)10                setattr(self, field, value)
1111
12        def __repr__(self):12        def __repr__(self):
13            items = []13            items = []
14            for field in fields:14            for field in fields:
15                try:15                try:
16                    value = getattr(self, field)16                    value = getattr(self, field)
17                except AttributeError:17                except AttributeError:
18                    value = getattr(self.__class__, field)18                    value = getattr(self.__class__, field)
19                items.append(f'{field}={value}')19                items.append(f'{field}={value}')
20            return ' '.join(items)20            return ' '.join(items)
21        namespace['__init__'] = __init__21        namespace['__init__'] = __init__
22        namespace['__repr__'] = __repr__22        namespace['__repr__'] = __repr__
23        return super().__new__(cls, name, bases, namespace)23        return super().__new__(cls, name, bases, namespace)
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op