目次
- 内部クラス
- ソースを動かしてみる
- まとめ
内部クラス
ソースだとこんなの
test.py
import sys
class Outer:
def __init__(self):
print("create Outer Class")
print(self.Inner)
# self.Innerのメモリサイズを確認
print(sys.getsizeof(self.Inner))
class Inner:
def __init__(self):
print("create Inner Class")
outer = Outer()
内部クラス=クラスの中のクラスのこと
英語だとinner class とかnested classって言うよ〜
ソースを動かしてみる
$ python test.py
create Outer Class
<class '__main__.Outer.Inner'>
1056
Innerクラスはインスタンス化されてないのでprint("create Inner Class")
は実行されていません。
しかし、self.Innerはしっかり存在して、メモリサイズも出てきています。
まとめ
内部クラスのメリットとして以下が考えられます。
- ソース上で依存関係を表せる
- 外側クラスのインスタンス化を強制できる
逆にデメリットとして
- 余計なメモリを消費している
機械学習などで大量のデータを扱うクラスに関しては、リソースの節約のために内部クラスを使用しないのがベターな気がしました。
ご意見、ご指摘は大歓迎です。むしろ他の人はどう考えているのか知りたいです。よろしくお願いします。。