Рефакторинг функции-члена Pycharm в __call __ (...)? - PullRequest
1 голос
/ 07 октября 2019

Допустим, у меня есть следующий класс:

class Foo:
    def __init__(self):
        pass

    def do_something(self, x):
        return x

bar = Foo()
baz = Foo()
bru = Foo()
print(bar.do_something(3))
print(baz.do_something(4))
print(bru.do_something(5))

Я хочу сделать рефакторинг do_something магической функцией __call__, чтобы класс теперь выглядел так:

class Foo:
    def __init__(self):
        pass

    def __call__(self, x):
        return x

Есть ли способ сделать это в Pycharm таким образом, что использование инструмента рефакторинга на do_something приведет к рефакторингу print(bar.do_something(3)) в print(bar(3)), в дополнение к baz и bru или любым другим гипотетическим вызовам этих объектов__call__ найдено в какой-либо другой части проекта? Прямо сейчас это рефакторинг к print(bar.__call__(3))

1 Ответ

0 голосов
/ 07 октября 2019

Вы можете сделать рефакторинг do_something => позвонить и чем рефакторинг. позвонить => (ничего)

Потому что все места, которые используют , звонят используйте его с точкой раньше, за исключением замедления, которое вы не хотите удалять.

...