問題タブ [abc]

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 投票する
3 に答える
1741 参照

python - Pythonのabcモジュールとプロパティを使用してメンバー変数にアクセスできません

abcモジュールとの使用をシミュレートするコードを作成しましたpropertieswidthしかし、height変数にアクセスできなかったようです。コードは次のとおりです。

取得したエラーメッセージはですNameError: name 'width_setter' is not defined。私の実装で何が間違っている可能性がありますか?

編集:

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

python - 「より良い」__repr__()を持つこの抽象基本クラスは危険ですか?

__repr__()クラスのデフォルトがあまり有益ではないことは私を悩ませます:

...だから私はそれを改善する方法を考えてきました。pickle少し検討した後、プロトコルの__getnewargs__()メソッドを活用するこの抽象基本クラスを思いつきました。

その使用法の簡単な例を次に示します。

...そして結果として生じるrepr()振る舞い:

これで、Pythonがデフォルトでこれをすぐに行わない理由の1つがわかります。すべてのクラスにメソッドを定義するように要求することは、メソッド__getnewargs__()を定義することを期待する(ただし要求しない)よりも負担が大きくなります__repr__()

私が知りたいのは、それはどれほど危険で壊れやすいのかということです。一方で、Reproインスタンスにそれ自体が含まれている場合、無限の再帰が発生することを除いて、ひどく間違っている可能性のあるものは考えられません...しかし、上記のコードを醜くするという犠牲を払って、それは解決可能です。

他に何を逃しましたか?

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

python - 暗黙的な型変換を使用したポイント演算の実装

Functionそのインスタンスが 1 つの引数を取る callable であるclassがあるとします。これらのクラスの点ごとの演算を簡単な方法で定義しました。これが私のコードの簡略化されたバージョンです(実際には and でより複雑な動作をし__init____call__いますが、この質問には関係ありません):

暗黙の型変換を許可しようとすると行き詰まります。たとえば、次のように書けるようになりたいです。

言い換えれば、インスタンスvの隣の算術式で数値オブジェクトを見るたびに、 に変換しFunctionたいと思います。vFunction(lambda x : v)

さらに、いくつかのユーザー定義型に対して同様の動作を実現したいと考えています (繰り返しますが、Functionオブジェクトを使用した同じバイナリ算術式でそれらを見るたびに)。

このロジックは、通常の二項算術演算子と反映された二項算術演算子のブルート フォースの組み合わせを使用してコード化できますが、それぞれisinstance(v, numbers.Number)とをチェックしisinstance(v, MyUserDefinedType)ますが、もっと洗練された方法があると思います。

また、私のデザインで他に改善点があれば教えてください。(Functionオブジェクトはめったに作成されませんが、非常に頻繁に呼び出されるため、パフォーマンスが重要です。)

編集:

@Eric のコメントに対処するには、別のユーザー定義クラスがあることを明確にする必要がありますFunctional

Function同じ算術式で aとインスタンスの両方が表示される場合、メソッドを使用するように暗黙的に変換しFunctionalたいと考えています。FunctionFunctionalFunctional.from_function

したがって、暗黙の型変換階層は次のようになります。

  • 機能的
  • 関数
  • 他に何か

そして、特定の算術式で見られるこの階層の最上位の型に暗黙的に変換したいと思います。

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

python - Python の継承、メタクラス、および type() 関数

次のコードが特定の方法で動作する理由を理解できません。これについては、以下で説明します。

なぜそうrepr(MyClass2)言うabc.MyClass2のですか(ちなみにこれは真実ではありません)?ありがとうございました!

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

python - @abstractproperty と @abstractmethod を使用した実装/オーバーライドの実際の違い

後続の各サブクラスでオーバーライドする関数を持つ抽象基本クラスを検討してください。abc モジュールと ABCMeta を使用します。デコレーターによって指定されたタイプの関数を作成するために実装するサブクラス/開発者を使用して装飾する@abstractpropertyか、@abstractmethod実際に強制しますか? 私の実験から、メソッドで抽象プロパティをオーバーライドし、サブクラスのプロパティで抽象メソッドをオーバーライドできます。

この考えは間違っていますか?

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

python - abc.abstractmethod + プロパティ

ドキュメントによると、結合@propertyして機能@abc.abstractmethodするはずなので、python3.3で次のように機能するはずです。

実装をテストします。

したがって、明らかにプロパティではありません。そのように機能するはずだからです。

たぶん私は愚かなのか、単にうまくいかないのか、誰かがアイデアを持っていますか?

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

python - 親ファイルからサブクラス変数にアクセスする

別のファイルでインスタンス化された親クラスからサブクラス変数にアクセスする方法を探しています。例えば

ベースファイル.py:

実装ファイル.py:

私が実行すると:

私は 0 を取得します。私は 10 を取得したいです。

親クラスと実装クラスの両方が同じファイルにある場合、これは明らかに問題ではありませんが、それらが必要ないプロジェクト構造があります。

モジュールが役立つかもしれないと思いますabcが、それを使った私の実験はこれまでのところ無益であることが証明されています.