私はpython(C++の世界から来て)に慣れていて、クラスメソッドを試していました。私は引数なしでメソッドを作成しました(意図的にこの場合はself
引数を避けています)。それから私は、私はPythonでは、と呼ばれるすべてのクラスのメソッドは、常にそのオブジェクトの参照である少なくとも一つの引数を渡され、ため、このエラーがあると思い呼び出すpythonクラスのメソッドがありません
class car:
def car_method():
print("Inside Car method")
obj = car_method()
obj.car_method() <---- this creates error: TypeError: car_method() takes 0 positional arguments but 1 was given
それを呼び出そうとしました。私は正しいですか?
その後さらに実験する、私は
obj.car_method <----- assuming I am not passing any argument to it
を書きましたが、機能は何も印刷されません。
は、それから私は、誰もがここで何が起こっているか説明でき
bound method car.car_method of <__main__.car object at 0x005D2290>
が生じ
print(obj.car_method)
を使用して、それのタイプを印刷しようとしました。 car_methodはどのように呼び出すのですか? car_methodを呼び出す方法がない場合、なぜPythonでは引数を指定せずにメソッドを定義できますか?
ここでは基本についてよく理解しようとしています。 car_methodをクラスメソッドとして呼び出すことはできますか?それとも、クラス内で定義されたメソッドですか?クラスのメソッドは次のようにすることによって定義されるPythonで
を@classmethodと@staticmethodデコレータについての詳細を知るためにはPythonの
で、実行時に起こりますクラスメソッド?それはクラス内で定義されたメソッドなのでしょうか?」と、私はそれが違う振る舞いをしていることを実感しました。さらに実験した後、クラス内で使用できるクラスメソッドですが、 'self.car_method ) '。これでもエラーが発生します。しかし、 'car_method()'のように呼び出すと、他のクラスメソッドで使用しないとうまくいくでしょう!!!!それはクラス属性として使用することができます! – legameeternoforall