pyCharm рефакторинг имени атрибута класса python, не переименовывает все виды использования атрибутов - PullRequest
0 голосов
/ 14 мая 2018

Учитывая следующее:

class test:
    att = 7


def print_class(class_instance):
    print(class_instance.att)


if (__name__ == '__main__'):
    t = test()
    print_class (t)

print_class ожидает экземпляр класса test в качестве параметра, но это не типизированный.

Теперь я хотел бы переименовать с помощью рефакторинга att Тем не менее,

печать (class_instance. Att )

не будет переименован, так как редактор не имеет ни малейшего понятия, это тот же атрибут. Это будет обнаружено только во время выполнения.

Есть ли способ преодолеть это?

1 Ответ

0 голосов
/ 14 мая 2018

Как подсказывает @jonsharpe в комментариях, подсказки типов решат эту проблему.

Однако, если вы не хотите использовать подсказки типов, вы можете использовать строку документации, которая присоединяет тип к class_instance:

class test:
    att = 7


def print_class(class_instance):
    """

    :param test class_instance:
    #       ^ specify type here
    :return:
    """
    print(class_instance.att)


if (__name__ == '__main__'):
    t = test()
    print_class(t)

После рефакторинга:

class test:
    attribute = 7


def print_class(class_instance):
    """

    :param test class_instance:
    :return:
    """
    print(class_instance.attribute)


if (__name__ == '__main__'):
    t = test()
    print_class(t)
...