[解決済み] Pythonでクラスを別のクラスの中に定義することにメリットはありますか?
2022-08-11 04:44:03
質問
ここで話しているのは、ネストされたクラスについてです。基本的に、私はモデル化している2つのクラスを持っています。DownloadManagerクラスとDownloadThreadクラスです。ここでの明らかな OOP コンセプトは構成です。しかし、構成は必ずしもネストを意味するわけではありませんよね?
次のようなコードがあります。
class DownloadThread:
def foo(self):
pass
class DownloadManager():
def __init__(self):
dwld_threads = []
def create_new_thread():
dwld_threads.append(DownloadThread())
しかし今、私はネストした方が良い状況があるのではないかと考えています。こんな感じ。
class DownloadManager():
class DownloadThread:
def foo(self):
pass
def __init__(self):
dwld_threads = []
def create_new_thread():
dwld_threads.append(DownloadManager.DownloadThread())
どのように解決するのですか?
この方法は、quot;inner" クラスが単発のものであり、そのクラスが 定義 の外では決して使用されません。例えば、メタクラスを使用する場合、次のようにするのが便利です。
class Foo(object):
class __metaclass__(type):
....
は、一度だけ使うのであれば、メタクラスを別々に定義する代わりに
私がそのようにネストされたクラスを使用した他の唯一の時は、外側のクラスは密接に関連するクラスの束を一緒にグループ化するための名前空間としてのみ使用しました。
class Group(object):
class cls1(object):
...
class cls2(object):
...
そして、別のモジュールから、Groupをインポートして、Group.cls1、Group.cls2などのように参照することができます。しかし、モジュールを使用することによって、まったく同じことを(おそらくより混乱しない方法で)達成することができると主張する人がいるかもしれません。
関連
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] Pythonで複数行のコメントを作成する方法はありますか?
-
[解決済み] Pythonの関数内の静的変数に相当するものは何ですか?
-
[解決済み] Pythonで子クラスから親クラスのメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] Pythonで文字列を別の文字列に追加するにはどうすればよいですか?
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?