首页 > 解决方案 > 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

不会被重命名,因为编辑器不知道这是同一个属性。这只会在运行时被发现。

有没有办法克服这个问题?

标签: pythonrefactoringrenamingclass-attribute

解决方案


正如@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)

推荐阅读