問題タブ [new-style-class]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python のクラスの型
なぜ私がそうしたら:
私が得た: <type 'instance'>
、しかし私がそうする場合:
私は得ました:<class '__main__.c'>
?
最初のものはあまりユーザーフルではありません
python - Pythonの新しいスタイルクラス関連の質問
私はPythonの学習者であり、現在、ここの「名前付きのものの束」の例のように、可変数のフィールドを持つクラスをハッキングしています。
__setattr__
また、入力属性名を確認するために、このクラスにを記述したいと思います。しかし、Pythonのドキュメントには次のように書かれています。
__setattr __()がインスタンス属性に割り当てたい場合は、単に「self.name = value」を実行するべきではありません。これにより、それ自体が再帰的に呼び出されます。代わりに、インスタンス属性のディクショナリに値を挿入する必要があります(例: "self .__ dict __ [name] =value")。新しいスタイルのクラスの場合、インスタンスディクショナリにアクセスするのではなく、同じ名前の基本クラスメソッドを呼び出す必要があります(例: "object .__ setattr __(self、name、value)")。
その場合、置換object.__dict__
する関数でも使用する必要がありますか?__init__
self.__dict__
python - __dict__.update() は古いスタイルですか?
newstyle 属性と oldstyle 属性の違いについて読んで混乱しています。この例では:
このコードは、古いスタイルの方法を使用して属性を変更していますか?
Event()
で_self.__dict__.update(kw)
getattr、 getattr 、またはgetattributeを使用する必要がありますか?
為に
Dispatcher.dispatch_to_parent()
コードはhttp://www.pygame.org/wiki/CommandDispatch?parent=CookBookからのものです
python - クラス インスタンスをクラス属性、記述子、およびプロパティとして使用する
私は最近、Python で新しいスタイルのクラス (オブジェクトから派生したもの) を使用しようとしていると述べました。それらに慣れるための演習として、属性として多数のクラス インスタンスを持つクラスを定義しようとしています。これらのクラス インスタンスのそれぞれは、1 次元リスト、2 次元配列、スカラーなどの異なるタイプのデータを記述します。本質的に私は書けるようになりたい
wheredata_type
は、変数のコレクションを記述するクラス インスタンスです。profiles_1d
以下は、インスタンスとかなり一般的な名前を使用して、これを実装する最初の試みです。
上記のコードは、この問題に取り組む適切な方法でしょうか。私が見た使用例はproperty
、変数の値を設定するだけです。ここでは、あるクラスのインスタンスを初期化するために set メソッドが必要です。そうでない場合は、これを実装するためのより良い方法の提案があれば大歓迎です。
さらに、 set メソッドを定義する方法は大丈夫ですか? 一般的に、 set メソッドは、私が理解している限り、ユーザーが入力したときに何をすべきかを定義します。この例では、
profiles_1d
上記のコードでインスタンスの属性を正しく設定できる唯一の方法は typecollection.set_profiles([...], y1=[...], ...)
ですが、このメソッドを直接呼び出すべきではないと思います。理想的には、次のように入力したいと思いcollection.profiles = ([...], y1=[...], ...)
ます:これは正しい/可能ですか?
最後に、クラスの新しいスタイルに関して多くのデコレーターが言及されているのを見てきましたが、これについてはほとんど知りません。ここでデコレータの使用は適切ですか? これは、この問題についてもっと知っておくべきことですか?
python - スーパーで複数の親クラスのinitを呼び出しますか?
重複の可能性:
Super は多重継承を処理できますか?
パイソン継承?クラス構造 (以下) があり、子クラス__init__
が両方の親の を呼び出すようにします。これは「超」方法で行うことが可能ですか、それとも単にひどい考えですか?
python - Python new-style classes の __new__ がクラスメソッドではないのはなぜですか?
Python 2.2 の変更ログ (新しいスタイルのクラスが導入された場所) は、__new__
関数について次のように述べています。
__new__
クラスメソッドではなく静的メソッドです。最初はクラス メソッドでなければならないと思っていたので、classmethod
プリミティブを追加しました。残念ながら、クラス メソッドでは、この場合アップコールが正しく機能しないため、最初の引数として明示的なクラスを持つ静的メソッドにする必要がありました。
しかし、なぜクラス メソッドがこの目的で機能しないのか、私には思いつきません。__new__
最終的にクラスメソッドにならなかったのはなぜですか? Guido が「この場合、upcall が正しく機能しない」と言うとき、何を参照していますか?
python - TypeError:メタクラスベースを呼び出すときのエラー新しいスタイルのクラスはクラシックベースのみを持つことはできません
次のように定義されたクラスのコレクション:
実行すると、次のエラーが発生します。
コードにBの既知の文字列表現を含めるには、メタクラス(私は思う)が必要です。それを持っている理由は重要ではありませんが、それは将来のアップデートに大いに役立ちます。
したがって、CがBのメタクラスであり、BがAのサブクラスである必要があると仮定すると、ここで何が問題になっているのか、エラーを削除するために何を変更するのかを誰かに教えてもらえますか?
python - Python のプロパティ デコレータが期待どおりに動作しない
しかし、期待どおりに「あなたはばかげている」、「あなたはばかげている」などとは出力されません。理由がわからない。皆さん、私に理解してもらえますか?
前もって感謝します!
python - 古いスタイルのクラス、新しいスタイルのクラス、メタクラス
Python 2.xでは、すべての新しいスタイルのクラスはobject
暗黙的または明示的に継承します。次に、これを見てください:
A
これは、新しいスタイルのクラスという意味ですか?でもとにかくA
継承しませんobject
よね?
OK、B
クラシッククラスですね。
なぜ両方A
のインスタンスとB
のインスタンスがあるのobject
ですか?
B
のインスタンスである場合、そうobject
ではtype(B)
ありませんclassobj
か?
python - 記述子と python 提供の属性
私は Python を学んでおり、記述子をよりよく理解しようとしています。この Python オンライン ブック: http://www.cafepy.com/article/python_attributes_and_methods/ch01s05.htmlを見ると、次のように書かれています。
- attrname が objectname の特別な (つまり、Python が提供する) 属性である場合、それを返します。
Python提供の意味がわかりません。誰かが、通常の解決順序よりも優先される Python 提供の属性の例を教えてもらえますか?
注:私は新しいスタイルのクラスにのみ興味があります(私の知る限り、記述子は古いスタイルには適用されません)。