問題タブ [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.

0 投票する
1 に答える
3315 参照

python - Python のクラスの型

なぜ私がそうしたら:

私が得た: <type 'instance'>、しかし私がそうする場合:

私は得ました:<class '__main__.c'>

最初のものはあまりユーザーフルではありません

0 投票する
2 に答える
513 参照

python - Pythonの新しいスタイルクラス関連の質問

私はPythonの学習者であり、現在、ここの「名前付きのものの束」の例のように、可変数のフィールドを持つクラスをハッキングしています

__setattr__また、入力属性名を確認するために、このクラスにを記述したいと思います。しかし、Pythonのドキュメントには次のように書かれています。

__setattr __()がインスタンス属性に割り当てたい場合は、単に「self.name = value」を実行するべきではありません。これにより、それ自体が再帰的に呼び出されます。代わりに、インスタンス属性のディクショナリに値を挿入する必要があります(例: "self .__ dict __ [name] =value")。新しいスタイルのクラスの場合、インスタンスディクショナリにアクセスするのではなく、同じ名前の基本クラスメソッドを呼び出す必要があります(例: "object .__ setattr __(self、name、value)")。

その場合、置換object.__dict__する関数でも使用する必要がありますか?__init__self.__dict__

0 投票する
2 に答える
2319 参照

python - __dict__.update() は古いスタイルですか?

newstyle 属性と oldstyle 属性の違いについて読んで混乱しています。この例では:

  1. このコードは、古いスタイルの方法を使用して属性を変更していますか?

    Event()で_self.__dict__.update(kw)

  2. getattr、 getattr 、またはgetattributeを使用する必要がありますか?

    為にDispatcher.dispatch_to_parent()

コードはhttp://www.pygame.org/wiki/CommandDispatch?parent=CookBookからのものです

0 投票する
2 に答える
497 参照

python - クラス インスタンスをクラス属性、記述子、およびプロパティとして使用する

私は最近、Python で新しいスタイルのクラス (オブジェクトから派生したもの) を使用しようとしていると述べました。それらに慣れるための演習として、属性として多数のクラス インスタンスを持つクラスを定義しようとしています。これらのクラス インスタンスのそれぞれは、1 次元リスト、2 次元配列、スカラーなどの異なるタイプのデータを記述します。本質的に私は書けるようになりたい

wheredata_typeは、変数のコレクションを記述するクラス インスタンスです。profiles_1d以下は、インスタンスとかなり一般的な名前を使用して、これを実装する最初の試みです。

上記のコードは、この問題に取り組む適切な方法でしょうか。私が見た使用例はproperty、変数の値を設定するだけです。ここでは、あるクラスのインスタンスを初期化するために set メソッドが必要です。そうでない場合は、これを実装するためのより良い方法の提案があれば大歓迎です。

さらに、 set メソッドを定義する方法は大丈夫ですか? 一般的に、 set メソッドは、私が理解している限り、ユーザーが入力したときに何をすべきかを定義します。この例では、

profiles_1d上記のコードでインスタンスの属性を正しく設定できる唯一の方法は typecollection.set_profiles([...], y1=[...], ...)ですが、このメソッドを直接呼び出すべきではないと思います。理想的には、次のように入力したいと思いcollection.profiles = ([...], y1=[...], ...)ます:これは正しい/可能ですか?

最後に、クラスの新しいスタイルに関して多くのデコレーターが言及されているのを見てきましたが、これについてはほとんど知りません。ここでデコレータの使用は適切ですか? これは、この問題についてもっと知っておくべきことですか?

0 投票する
3 に答える
20002 参照

python - スーパーで複数の親クラスのinitを呼び出しますか?

重複の可能性:
Super は多重継承を処理できますか?

パイソン継承?クラス構造 (以下) があり、子クラス__init__が両方の親の を呼び出すようにします。これは「超」方法で行うことが可能ですか、それとも単にひどい考えですか?

0 投票する
1 に答える
3342 参照

python - Python new-style classes の __new__ がクラスメソッドではないのはなぜですか?

Python 2.2 の変更ログ (新しいスタイルのクラスが導入された場所) は、__new__関数について次のように述べています。

__new__クラスメソッドではなく静的メソッドです。最初はクラス メソッドでなければならないと思っていたので、classmethodプリミティブを追加しました。残念ながら、クラス メソッドでは、この場合アップコールが正しく機能しないため、最初の引数として明示的なクラスを持つ静的メソッドにする必要がありました。

しかし、なぜクラス メソッドがこの目的で機能しないのか、私には思いつきません。__new__最終的にクラスメソッドにならなかったのはなぜですか? Guido が「この場合、upcall が正しく機能しない」と言うとき、何を参照していますか?

0 投票する
2 に答える
23049 参照

python - TypeError:メタクラスベースを呼び出すときのエラー新しいスタイルのクラスはクラシックベースのみを持つことはできません

次のように定義されたクラスのコレクション:

実行すると、次のエラーが発生します。

コードにBの既知の文字列表現を含めるには、メタクラス(私は思う)が必要です。それを持っている理由は重要ではありませんが、それは将来のアップデートに大いに役立ちます。

したがって、CがBのメタクラスであり、BがAのサブクラスである必要があると仮定すると、ここで何が問題になっているのか、エラーを削除するために何を変更するのかを誰かに教えてもらえますか?

0 投票する
2 に答える
2218 参照

python - Python のプロパティ デコレータが期待どおりに動作しない

しかし、期待どおりに「あなたはばかげている」、「あなたはばかげている」などとは出力されません。理由がわからない。皆さん、私に理解してもらえますか?

前もって感謝します!

0 投票する
2 に答える
737 参照

python - 古いスタイルのクラス、新しいスタイルのクラス、メタクラス

Python 2.xでは、すべての新しいスタイルのクラスはobject暗黙的または明示的に継承します。次に、これを見てください:

Aこれは、新しいスタイルのクラスという意味ですか?でもとにかくA継承しませんobjectよね?

OK、Bクラシッククラスですね。

なぜ両方AのインスタンスとBのインスタンスがあるのobjectですか?

Bのインスタンスである場合、そうobjectではtype(B)ありませんclassobjか?

0 投票する
2 に答える
331 参照

python - 記述子と python 提供の属性

私は Python を学んでおり、記述子をよりよく理解しようとしています。この Python オンライン ブック: http://www.cafepy.com/article/python_attributes_and_methods/ch01s05.htmlを見ると、次のように書かれています。

  1. attrname が objectname の特別な (つまり、Python が提供する) 属性である場合、それを返します。

Python提供の意味がわかりません。誰かが、通常の解決順序よりも優先される Python 提供の属性の例を教えてもらえますか?

注:私は新しいスタイルのクラスにのみ興味があります(私の知る限り、記述子は古いスタイルには適用されません)。