と属性? Cが定義されていないので、GETATTR(C、名前が)...クラスの構築時に、動作しませんクラスは「計算」名前
3
A
答えて
11
方法について:
あるclass C(object):
blah blah
for name in (...):
setattr(C, name, "....")
、定義の後に属性設定を行います。
0
この目的でメタクラスを使用するとどうなりますか?
3
2
クラス全体が計算されている場合は、type
呼び出し可能であることをお勧めします。
d = dict(('member-%d' % k, k*100) for k in range(10))
C = type('C',(), d)
これはあなたのニーズは本当に複雑な場合、メタクラスを検討
class C(object):
member-0 = 0
member-1 = 100
...
とあなたに同じ結果を与える:あなたの元の容器が辞書だった場合、これは特に便利です。 (実際には、type
はメタクラス=)
+0
これは、識別子にハイフン - マイナス文字を含めることができないため、通常のPython構文を使用してアクセスできない属性名になります。この例では '_'を使用する方が良いでしょう。 – gerrit
関連する問題
- 1. 計算署名
- 2. 以前の値で計算
- 3. 計算前のLivyリターン
- 4. 継承クラスでの計算
- 5. 計算された名前のjavascriptオブジェクトを作成する
- 6. 名前ピッカーコントロールのcsjs IDを計算する
- 7. ピボットテーブルの名前を使用して平均を計算する
- 8. リピートコントロール内のスコープ付き変数の名前を計算する
- 9. 名前付きパラメータと計算によるストアドプロシージャ
- 10. 計算されたメンバーの名前付きセットを使用
- 11. SSAS - 名前付き計算これを考慮
- 12. 名前付き計算で現在までの整数のキー
- 13. 日時計算は6時間前
- 14. データベーストリガー挿入前と計算は
- 15. 列の名前を省略してdplyrで列の合計を計算する
- 16. Propertiesクラスの名前
- 17. 計算統計は
- 18. Java - お金クラスの名前
- 19. C++ - クラスの名前空間
- 20. クラス、名前空間、ビン/コンソールコマンド
- 21. プロデューサメソッドと名前付きクラス
- 22. 名前空間内のクラス
- 23. ggplotエラーバーの事前計算値
- 24. MySQLの前の行の計算
- 25. 時間前にPHPで計算する
- 26. mathprogの行列の "事前計算"
- 27. 事前計算によるDoctrineフィルタリング
- 28. ホーアロジック、事前条件を計算
- 29. 永久dom-ifのポリマー事前計算
- 30. Java BufferedImage:事前にメモリサイズを計算
BTW:あなたのタグ "コンパイル時"は、Pythonの質問では嫌です。編集は本当に重要な考慮事項ではありません。これは、コードのコンパイルではなく、クラスを定義することです。これは直交問題です。 –
@Ned:そうです。この例のコードはコンパイル時にのみ実行されるため、「コンパイル時」タグを使用しました。技術的には、それは遅れて実行される可能性があり、クラスを定義する必要性は依然として残っています。 – EOL