問題タブ [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 投票する
2 に答える
1621 参照

python - 文字列の ABC?

私は最近、コレクション内の抽象基本クラス (ABC) を発見し、その明確で体系的なアプローチと Mixin が好きです。カスタム文字列 (*) も作成したいのですが、文字列の ABC が見つかりませんでした。

UserStringはありますが、UserDictはだめだった!? str 自体から派生すると、Mixin はありませんか? オーバーライドされたメソッドで、文字列の「データ」部分にどのようにアクセスしますか?

どこかで、Sequence と Hashable から派生する提案を見ましたが、書き込めませんでしたif 'test' in my_string:?!

どのアプローチをお勧めしますか?

(*) 理由は次のとおりです: - 内部的に定義された方法で順序付けされる文字列を作成します - 列挙スコープ外の値と比較するとエラーをスローする文字列を (列挙の一部として) 作成します

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

python - python@abstractmethodデコレータ

私は抽象基本クラスに関するPythonドキュメントを読みました:

ここから:

abc.abstractmethod(function) 抽象メソッドを示すデコレータ。

このデコレータを使用するには、クラスのメタクラスがそれであるABCMetaか、それから派生している必要があります。から派生したメタクラスを持つクラスは、ABCMeta その抽象メソッドとプロパティがすべてオーバーライドされない限り、インスタンス化できません。

そしてここに

@abstractmethod実装する必要のあるdraw()などのメソッドにデコレータを適用できます。Pythonは、メソッドを定義しないクラスに対して例外を発生させます。例外が発生するのは、メソッドがないサブクラスのインスタンスを実際に作成しようとした場合のみであることに注意してください。

私はそれをテストするためにこのコードを使用しました:

コードはうまくいくので、わかりません。入力すると、次のc.abstractMethodようになります。

私がここで欠けているものは何ですか?ConcreteClass 抽象メソッドを実装する必要がありますが、例外はありません。

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

python - スーパークラスメソッドからPythonサブクラス化メソッドを呼び出すにはどうすればよいですか?

私は次の種類のスーパークラス/サブクラスのセットアップを持っています:

SuperClass initで、まだ実装されていないdo_somethingメソッドを常に呼び出すようにしたいと思います。私はPython2.7を使用しています。おそらくABCはこれを行うことができますが、別の方法はありますか?

ありがとう。

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

python - abc をサブクラス化する django モデルは、メタクラスの競合を引き起こします

次のモデルと抽象基本クラスがあります

しかし、次のエラーが発生します。

メタクラスの競合: 派生クラスのメタクラスは、そのすべてのベースのメタクラスの (厳密ではない) サブクラスでなければなりません

ここでの問題は、(ここで説明されているようにhttp://code.activestate.com/recipes/204197-solving-the-metaclass-conflict/ ) 2 つの基本クラスに 2 つの異なるメタクラスがあるため、Python がどのメタクラスを使用するかを決定できないことだと思います子オブジェクトに使用します。

これを解決するために、多重継承を削除し、次の register メソッドを使用して子クラスを登録しました

しかし、私はこのアプローチがあまり好きではありませんでした。モンキー パッチのように見えるからです。

この問題を解決する別の方法はありますか?

Model メタクラスを Child に明示的に割り当てようとしましたが、うまくいきませんでした。コードを書くことで解決する方法を探しているわけではありません。これは、クラス構造を変更することで解決する必要があると思います。

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

python - カバレッジ レポートから抽象プロパティを除外する

次のような抽象基本クラスがあります。

しかし、プロジェクトでノーズテスト (カバレッジ) を実行すると、プロパティの定義行がテストされていないと不平を言います。抽象クラスのインスタンス化により例外が発生するため、実際にテストすることはできません(AFAIK)..

これに対する回避策はありますか、それとも 100% 未満のテスト カバレッジを受け入れる必要がありますか?

もちろん、ABCMeta使用法を削除して基本クラスを raiseNotImpementedErrorにすることもできますが、私は前者の方法を好みます。

0 投票する
6 に答える
24437 参照

python - Python-抽象基本クラスのテスト

抽象基本クラスで定義されたメソッドをテストする方法/ベストプラクティスを探しています。私が直接考えることができることの1つは、基本クラスのすべての具象サブクラスでテストを実行することですが、それは時々過度に思えます。

この例を考えてみましょう。

barサブクラス化せずにテストすることは可能ですか?

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

android - Androidのオーディオプレーヤーで中断される

深刻な問題があります。2日間調べましたが、解決できません。アプリを実行すると、エラーが発生します。

ログキャット ...................

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

python - Python ABC は不完全な実装を許可しているようです

基本クラスを作成し、すべてのサブクラスにそのインターフェイスを実装させようとしています。abcこの目的のためにモジュールを使用しています。

基本クラスは次のとおりです。

そして、これが子供です:

このテスト:

次の結果が生成されます。

不完全な実装について泣き言を言う必要はありません!

したがって、私の質問は、抽象基本クラスが真に抽象的ではないかどうかです。そうでない場合、堅牢なタイピングを行う方法はありますか?

注:クライアント クラスが適切なインターフェイスを実装していることを確認する必要があることを示すために、サンプル クラスPluginBaseに名前を付けました。CompletePlugin

PluginBaseから派生しようとしましobjectたが、これは違いはありません。私はPython 2.7.1を使用しています

どんな助けでも大歓迎です。

0 投票する
0 に答える
47 参照

python - collections.MutableSequence サブクラスはシングルトンのように見えますか?

重複の可能性:
Python の「最小の驚き」: 変更可能な既定の引数

この回答にあるコードをいじってみると、次のような奇妙な点が見つかりました。これが私のクラス宣言であり、まったく自明な MutableSequence サブクラスです。

さて、奇妙な点は次のとおりです。

インスタンスがプロパティを共有しているように見えるのはなぜですか?

0 投票する
4 に答える
829 参照

python - dict-ableクラスのPythonイディオム?

私はこのようなことをしたい:

これを行うためのよりPythonicな方法はありますか? たとえば、組み込みの変換をオーバーロードすることは可能dict(...)ですか? 必ずしもすべてのメンバー変数を返したいわけではないことに注意してくださいFoo。むしろ、各クラスに何を返すかを決定させたいと思います。

ありがとう。