PyCharm 2017.3 Help

Move Refactorings

Basics

The Move refactorings allow you to move classes, functions, modules, files and directories within a project. So doing, PyCharm tracks these movements and automatically corrects all references to the moved symbols in the source code.

The following Move refactorings are available:

  • The Move File refactoring moves a file to another directory.
  • The Move Directory refactoring moves a directory to another directory.
  • The Move Module Members refactoring moves top-level symbols of a Python module.
  • The Make local function/method top-level refactoring converts a method or a local function to a top-level function and moves it to the specified file.

Performing Move refactoring

To perform a Move refactoring, follow these general steps:

  1. Select the symbol to be moved and do one of the following:
    • On the main menu, or on the context menu, point to Refactor, and then choose Move.
    • Press F6.
    • In the Project Tool Window, drag the symbol to the new location.

    The dialog that opens depends on the type of the selected symbol.

  2. Specify the move options according to the type of the item to be moved. See option descriptions in the Move dialog box reference.
  3. Preview and apply the changes.

Moving top-level symbols

To move a member, follow these steps:

  1. Place the caret at a top-level symbol, for example:
    /help/img/idea/2017.3/py_move_module_member.png
  2. Press F6. The dialog box Move Module Members opens:
    /help/img/idea/2017.3/py_move_module_member1.png

    Refer to the dialog reference for the detailed description of controls.

  3. In this dialog box, select the members to be moved, and specify the target file.
  4. Preview and apply the changes.

Moving function/method to the top-level

This refactoring moves local functions or methods to the top-level by converting references to instance attributes or variables from enclosing scopes to parameters and updating existing usages accordingly.

To move a function or a method to top-level, follow these steps:

  1. Place the caret at the local function or method name.
  2. On the main menu, or on the context menu of the editor, choose Refactor | Move, or press F6.
  3. In the Make Method Top-Level dialog box that opens, specify the destination of move. You can type it manually, or click the browse button /help/img/idea/2017.3/browseButton.png and locate the destination file in the Choose Destination File dialog.
  4. Click Refactor to perform the refactoring, or Preview, to shows the preview in the Find tool window. If satisfied with the preview results, confirm move by clicking Do Refactor.

Example

BeforeAfter
import math class Solver(object): def __init__(self,a,b,c): self.a = a self.b = b self.c = c def demo(self, a, b, c): d = self.b ** 2 - 4 * self.a * self.c if d >= 0: disc = math.sqrt(d) root1 = (- self.b + disc) / (2 * self.a) root2 = (- self.b - disc) / (2 * self.a) print(root1, root2) return root1, root2 else: raise Exception Solver(2, 123, 0.025).demo()
import math class Solver(object): def __init__(self, a, b, c): self.a = a self.b = b self.c = c def demo(b, a, c): d = b ** 2 - 4 * a * c if d >= 0: disc = math.sqrt(d) root1 = (- b + disc) / (2 * a) root2 = (- b - disc) / (2 * a) print(root1, root2) return root1, root2 else: raise Exception s = Solver(2, 123, 0.025) demo(s.b, s.a, s.c)

See Also

Last modified: 15 September 2017