pyCharm рефакторинг имени атрибута класса python, не переименовывает все использования атрибутов

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

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 ответ

Как @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)
Другие вопросы по тегам