私は.NETとJavascriptのバックグラウンドから来て、私はPython(Raspberry Pi用)を学ぶために自分のやり方を工夫しています。
今、私はPythonでOOPを理解しようとしており、メソッドとクラスを使用しています。しかし、@staticmethodに少し問題があります@staticmethod属性のないメソッドの中でprint()を実行することはできますか?
class Car(object):
"""description of class"""
def __init__(self, make, model):
self.make = make
self.model = model
@staticmethod
def makeFirstNoise():
print("Vrooooommm!")
def makeSecondNoise():
print("Mweeeeeeeeeh!")
これは私のクラスを実装し、両方の方法を実行しようとしています。
from Car import Car
mustang = Car('Ford', 'Mustang')
mustang.makeFirstNoise()
mustang.makeSecondNoise()
これが出力されます。
Vrooooommm! Traceback (most recent call last): File "D:\Dev\T\PythonHelloWorld\PythonHelloWorld\PythonHelloWorld.py", line 5, in <module> mustang.makeSecondNoise() TypeError: makeSecondNoise() takes 0 positional arguments but 1 was given
そこで問題は、なぜ私は私のstaticmethod属性なしで第二の方法を実行することはできませんか?それはstaticmethod
として宣言されていないので、それが自動的に、一つの引数、self
を渡されるため
def makeSecondNoise():
return "Mweeeeeeeh!"
print(mustang.makeSecondNoise())