Pythonでクラスからクラスを呼び出し、呼び出したクラスの中にあるメソッドを実行する方法について記載します。
ちょっと何をいっているか分かりにくいので、さっそくソースコードを記述します。
ソースコード
class cat:
def __init__(self):
self.action = action()
class action:
def purr(self):
return "にゃーん"
mike = cat()
result = mike.action.purr()
print(result)
結果
にゃーん
ここではcatクラスの中に定義しているactionクラスのpurr関数を呼び出しています。
これが今回やりたかったことです。結果は「にゃーん」となっています。
方法としては、まずactionクラスを作成します。関数はpurrとしておきます。
class action:
def purr(self):
return "にゃーん"
次はcatクラスを作成します。
class cat:
def __init__(self):
self.action = action()
def __init__(self):
と記述して、その中に変数を定義すると、クラスをインスタンス化した際にここで定義した変数とその値がインスタンスに設定されます。
init関数の中にself.action = action()
と記述すると、actionクラスをインスタンス化してself.action変数に格納できます。
selfというのは自分自身という意味で、「self.変数名」と書くと変数名は同じでもインスタンスごとに違う変数になります。
このあとは、catクラスをインスタンス化(mike)して、mikeインスタンスの中にあるaction変数のpurrメソッドを実行するといった風に記述すれば無事やりたいことは達成できます。
mike = cat()
result = mike.action.purr()
print(result)
# にゃーん