Size: a a a

2021 July 28

PapaTheGreat Пи in SPb Python
так уже ответили там надо в декораторе через __ get(self, obj) возвращать functools.partial(self, obj)  и тогда в call __  прилетает obj вторым параметром( obj - это self декорируемого метода )
источник

PapaTheGreat Пи in SPb Python
а ссори не там ответили))

import functools

class MyDecorator:
   def __init__(self, func):
       self.func = func

   def __get__(self, obj, objtype=None):
       print('__get__', obj)
       return functools.partial(self, obj)

   def __call__(self, obj, *args, **kwargs):
       print('__call__', args, kwargs)
       print('__call__', obj.p)
       return self.func(obj, *args, **kwargs)

class Foo:

 def __init__(self):
     self.p = 10

 @MyDecorator
 def f(self, a, b, c):
     pass

print(Foo().f(1, 2, 3))
источник

DA

Dmitry Alimov in SPb Python
А обычный декортатор функция не подойдёт?
def my_decorator(fn):
   def wrapper(obj, *args, **kwargs):
       print('__call__', args, kwargs)
       print('__call__', obj.p)
       return fn(obj, *args, **kwargs)
   return wrapper
источник

PapaTheGreat Пи in SPb Python
Обычный подойдет, но я только начал изучать язык этот и мне было интересно, как такое сделать через класс
источник
2021 July 29

AK

Aladdin Khalmatov in SPb Python
Питон не первый твой язык, я полагаю?
источник

PapaTheGreat Пи in SPb Python
Да где-то пятый))
источник
2021 July 31

AS

Aleksey Shirokikh in SPb Python
Привет, ребята пытаюсь погрузиться в типизацию не понимаю чего от меня хочет mypy. точнее понимаю но отказываюсь :)
есть такая вот функция
def get_data_from_netbox(url: str, params: dict) -> Union[List[NetboxDeviceResponse], List[NetboxServiceResponse]]: ...


которую я зову из другой функции
def get_services() -> List[NetboxServiceResponse]:
...
return get_data_from_netbox(url, params)


mypy говорит что я не очень
 error: Incompatible return value type (got "Union[List[NetboxDeviceResponse], List[NetboxServiceResponse]]", expected
"List[NetboxServiceResponse]")  [return-value]


как мне его успокоить ?
источник

p

pragus in SPb Python
lol
источник

d

dexofan in SPb Python
cast
источник

AS

Aleksey Shirokikh in SPb Python
спасибо
источник

AS

Aleksey Shirokikh in SPb Python
одно из полей у меня имеет тип pydantic.Json. mypy на это агрится
error: "str" expects no type arguments, but 1 given  [type-arg]
       labels: Json[Dict[str, str]]
источник

d

dexofan in SPb Python
Плагин пайдантика для mypy подключен?
источник

AS

Aleksey Shirokikh in SPb Python
если вот этого достаточно то да
plugins = pydantic.mypy
источник

AS

Aleksey Shirokikh in SPb Python
я не совсем понимаю откуда он берется я его не "ставил"
источник

SV

Sergei V. in SPb Python
всё правильно он ругается
источник

AS

Aleksey Shirokikh in SPb Python
отлично а что по вашему он от меня хочет ?
источник

SV

Sergei V. in SPb Python
ну вот ты вызвал get_data_from_netbox из get_services и тебе вернулся List[NetboxDeviceResponse], а сигнатура у get_services стоит List[NetboxServiceResponse]. Не видишь проблему?
источник

AS

Aleksey Shirokikh in SPb Python
вижу
источник

AS

Aleksey Shirokikh in SPb Python
делать то что
источник

SV

Sergei V. in SPb Python
напиши 2 разные функции get_data_from_netbox которые возвращают конкретный тип, а не Union
источник