メンバーのプルアップ、メンバーのプッシュダウン
メンバーのプルアップ リファクタリングでは、クラスメンバーをスーパークラスに移動できます。
メンバーのプルアップ リファクタリングは、抽象メソッドを作成できます。 プロジェクトがインタープリター Python 2.x を利用する場合、インスタンスメソッドのみ抽象化することができます。 プロジェクトで Python 3.x を使用している場合は、任意のメソッドを抽象化できます。
PyCharm は抽象メソッドに必要な import 文を自動で追加します。
メンバーのプッシュダウン リファクタリングは、クラスメンバーをサブクラスに移動することによってクラス階層をクリーンアップできます。 その後、メンバーは直接サブクラスにのみ再配置されます。
メンバーのプルアップ
スーパークラスに移動するクラスを選択します。
メインメニューまたはコンテキストメニューから を呼び出します。 「メンバーのプルアップ 」ダイアログが表示されます。
宛先オブジェクト(スーパークラス)を選択します。
メンバー セクションで、移動するメンバーを選択します。
メソッドを抽象として移動するには、メソッドの隣の列 抽象化する チェックボックスを選択します。
選択したメンバーを宛先に移動するには、 リファクタリング をクリックします。
前 | 後 |
|---|---|
class SuperClass:
def super_method(self):
pass
class SubClassOne(SuperClass):
def my_method(self):
pass
|
class SuperClass:
def super_method(self):
pass
def my_method(self):
pass
class SubClassOne(SuperClass):
pass
|
メンバーのプッシュダウン
エディターで、メンバーをプッシュダウンする必要があるクラスを開きます。
メインメニューまたはコンテキストメニューから、 を選択します。 メンバーのプッシュダウンダイアログ は、プッシュダウンされるメンバーのリストを表示します。
プッシュダウンするメンバー 領域で、移動するメンバーを選択します。 キャレットのメンバーはすでに選択されていることに注意してください。
メンバーをプッシュすると問題が発生する可能性がある場合は、赤いハイライトで通知されます。 状況が無人の場合、リファクタリング後にエラーが発生することを意味します。 PyCharm は、問題を無視するか修正するかを選択できる問題検出ダイアログを表示します。
プレビューと変更の適用
前 | 後 |
|---|---|
class SuperClass:
def super_method(self):
pass
class SubClassOne(SuperClass):
def my_method(self):
pass
class SubClassTwo(SuperClass):
def my_method(self):
pass
|
class SuperClass:
pass
class SubClassOne(SuperClass):
def my_method(self):
pass
def super_method(self):
pass
class SubClassTwo(SuperClass):
def my_method(self):
pass
def super_method(self):
pass
|