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)