Я родом из .NET и Javascript, и я работаю, чтобы узнать Python (для малины Pi).
Сейчас я пытаюсь выяснить OOP в Python и использовать методы и классы. Но имея небольшую проблему с @staticmethodМожно ли запустить print() внутри метода без атрибута @staticmethod?
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? Это похоже на работу, если я просто возвращает текст непосредственно, как это:
def makeSecondNoise():
return "Mweeeeeeeh!"
print(mustang.makeSecondNoise())