私はメタクラスを構築しようとしています。私は本当にそれを得ていると思っていました。そして、私はこのメタクラスの各インスタンスに対してクラスメソッドを持たせたいと思います。お互いを呼び出すメタクラスメソッドのベストプラクティスは何ですか?
class MyMeta(type):
"""A metaclass"""
def __new__(mcs, name, bases, attributes):
pass
def _foo(cls):
pass
def _bar(cls):
cls._foo()
私はそれでpylintを実行すると、cls._foo
は困難があります。私は、コードを実行しようとすると
[pylint] E1120:No value for argument 'cls' in unbound method call
を(私のコードは、これよりも複雑である)うまく実行されている、とやっているように見えます私はそれがすることを期待しています。だから私はこの事件をどのように修正するつもりですか?正確にはどういう意味ですか?
@staticmethods
というものを正しく宣言していないというエラーは聞こえますが、@classmethod
とマークすることはできません。なぜなら、それはMetaclassメソッドになるからです。
関連検索は、人々がコンストラクタや何かを動的に追加している場所について話しているようですが、そうは思いません。まだメタクラスに関する何かを誤解していますか?
私が本当に望むのは、メタクラスで定義されたお互いを呼び出すクラスメソッドです。これを行うより良い方法はありますか?
https://stackoverflow.com/questions/35208443/pylint-complains-no-value-for-argument-cls – SteveJ
@SteveJそれは私が言及したケースです。その質問のOPは、コンストラクタが派生クラスで宣言されることを期待しています。これはここでは当てはまりません。 – McKay