問題タブ [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.
python - 文字列の ABC?
私は最近、コレクション内の抽象基本クラス (ABC) を発見し、その明確で体系的なアプローチと Mixin が好きです。カスタム文字列 (*) も作成したいのですが、文字列の ABC が見つかりませんでした。
UserStringはありますが、UserDictはだめだった!? str 自体から派生すると、Mixin はありませんか? オーバーライドされたメソッドで、文字列の「データ」部分にどのようにアクセスしますか?
どこかで、Sequence と Hashable から派生する提案を見ましたが、書き込めませんでしたif 'test' in my_string:
?!
どのアプローチをお勧めしますか?
(*) 理由は次のとおりです: - 内部的に定義された方法で順序付けされる文字列を作成します - 列挙スコープ外の値と比較するとエラーをスローする文字列を (列挙の一部として) 作成します
python - python@abstractmethodデコレータ
私は抽象基本クラスに関するPythonドキュメントを読みました:
ここから:
abc.abstractmethod(function)
抽象メソッドを示すデコレータ。このデコレータを使用するには、クラスのメタクラスがそれである
ABCMeta
か、それから派生している必要があります。から派生したメタクラスを持つクラスは、ABCMeta
その抽象メソッドとプロパティがすべてオーバーライドされない限り、インスタンス化できません。
そしてここに
@abstractmethod
実装する必要のあるdraw()などのメソッドにデコレータを適用できます。Pythonは、メソッドを定義しないクラスに対して例外を発生させます。例外が発生するのは、メソッドがないサブクラスのインスタンスを実際に作成しようとした場合のみであることに注意してください。
私はそれをテストするためにこのコードを使用しました:
コードはうまくいくので、わかりません。入力すると、次のc.abstractMethod
ようになります。
私がここで欠けているものは何ですか?ConcreteClass
抽象メソッドを実装する必要がありますが、例外はありません。
python - スーパークラスメソッドからPythonサブクラス化メソッドを呼び出すにはどうすればよいですか?
私は次の種類のスーパークラス/サブクラスのセットアップを持っています:
SuperClass initで、まだ実装されていないdo_somethingメソッドを常に呼び出すようにしたいと思います。私はPython2.7を使用しています。おそらくABCはこれを行うことができますが、別の方法はありますか?
ありがとう。
python - abc をサブクラス化する django モデルは、メタクラスの競合を引き起こします
次のモデルと抽象基本クラスがあります
しかし、次のエラーが発生します。
メタクラスの競合: 派生クラスのメタクラスは、そのすべてのベースのメタクラスの (厳密ではない) サブクラスでなければなりません
ここでの問題は、(ここで説明されているようにhttp://code.activestate.com/recipes/204197-solving-the-metaclass-conflict/ ) 2 つの基本クラスに 2 つの異なるメタクラスがあるため、Python がどのメタクラスを使用するかを決定できないことだと思います子オブジェクトに使用します。
これを解決するために、多重継承を削除し、次の register メソッドを使用して子クラスを登録しました
しかし、私はこのアプローチがあまり好きではありませんでした。モンキー パッチのように見えるからです。
この問題を解決する別の方法はありますか?
Model メタクラスを Child に明示的に割り当てようとしましたが、うまくいきませんでした。コードを書くことで解決する方法を探しているわけではありません。これは、クラス構造を変更することで解決する必要があると思います。
python - カバレッジ レポートから抽象プロパティを除外する
次のような抽象基本クラスがあります。
しかし、プロジェクトでノーズテスト (カバレッジ) を実行すると、プロパティの定義行がテストされていないと不平を言います。抽象クラスのインスタンス化により例外が発生するため、実際にテストすることはできません(AFAIK)..
これに対する回避策はありますか、それとも 100% 未満のテスト カバレッジを受け入れる必要がありますか?
もちろん、ABCMeta
使用法を削除して基本クラスを raiseNotImpementedError
にすることもできますが、私は前者の方法を好みます。
python - Python-抽象基本クラスのテスト
抽象基本クラスで定義されたメソッドをテストする方法/ベストプラクティスを探しています。私が直接考えることができることの1つは、基本クラスのすべての具象サブクラスでテストを実行することですが、それは時々過度に思えます。
この例を考えてみましょう。
bar
サブクラス化せずにテストすることは可能ですか?
android - Androidのオーディオプレーヤーで中断される
深刻な問題があります。2日間調べましたが、解決できません。アプリを実行すると、エラーが発生します。
ログキャット ...................
python - Python ABC は不完全な実装を許可しているようです
基本クラスを作成し、すべてのサブクラスにそのインターフェイスを実装させようとしています。abc
この目的のためにモジュールを使用しています。
基本クラスは次のとおりです。
そして、これが子供です:
このテスト:
次の結果が生成されます。
不完全な実装について泣き言を言う必要はありません!
したがって、私の質問は、抽象基本クラスが真に抽象的ではないかどうかです。そうでない場合、堅牢なタイピングを行う方法はありますか?
注:クライアント クラスが適切なインターフェイスを実装していることを確認する必要があることを示すために、サンプル クラスPluginBase
に名前を付けました。CompletePlugin
PluginBase
から派生しようとしましobject
たが、これは違いはありません。私はPython 2.7.1を使用しています
どんな助けでも大歓迎です。
python - collections.MutableSequence サブクラスはシングルトンのように見えますか?
重複の可能性:
Python の「最小の驚き」: 変更可能な既定の引数
この回答にあるコードをいじってみると、次のような奇妙な点が見つかりました。これが私のクラス宣言であり、まったく自明な MutableSequence サブクラスです。
さて、奇妙な点は次のとおりです。
インスタンスがプロパティを共有しているように見えるのはなぜですか?
python - dict-ableクラスのPythonイディオム?
私はこのようなことをしたい:
これを行うためのよりPythonicな方法はありますか? たとえば、組み込みの変換をオーバーロードすることは可能dict(...)
ですか? 必ずしもすべてのメンバー変数を返したいわけではないことに注意してくださいFoo
。むしろ、各クラスに何を返すかを決定させたいと思います。
ありがとう。