Pythonで継承されたクラス変数を変更する
2023-10-08 03:01:35
質問
子クラスが親クラスから継承したクラス変数を変更したいのですが、どうすればよいですか?
というようなことをしたいのですが。
class Parent(object):
foobar = ["hello"]
class Child(Parent):
# This does not work
foobar = foobar.extend(["world"])
と、理想的には持っています。
Child.foobar = ["hello", "world"]
できるようになった。
class Child(Parent):
def __init__(self):
type(self).foobar.extend(["world"])
というように変更しましたが、Childのインスタンスを生成するたびに、"world"がリストに追加されます。 私はさらにそれを修正することができました。
class Child(Parent):
def __init__(self):
if type(self).foobar.count("world") < 1:
type(self).foobar.extend(["world"])
が、これはまだハックです。なぜなら、これが動作する前にChildのインスタンスを生成しなければならないからです。
もっと良い方法はないでしょうか?
どのように解決するのですか?
親クラスのリストを修正するのではなく、サブクラスで別のリストを持ちたいのだと仮定します (その場で修正するか、最初から期待される値をそこに置くことができるので、無意味なように思われます)。
class Child(Parent):
foobar = Parent.foobar + ['world']
これは継承とは無関係に動作することに注意してください。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] 変数を参照渡しする方法を教えてください。
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] 環境変数の値にアクセスする方法
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] Pythonの検索パスを他のソースに展開する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] Python 言語を決定するには?
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例