.NET ve Javascript arka planından geliyorum ve Python'u (Raspberry Pi için) öğrenmek için yoldayım.
Şu anda Python'da OOP ve yöntem ve sınıfların kullanımını anlamaya çalışıyorum. Ancak @staticmethod@staticmethod özniteliği olmadan bir yöntem içinde bir yazdırma() çalıştırmak mümkün mü?
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!")
Küçük bir sorunla karşılaştığımda sınıfımı nasıl uygularım ve her iki yöntemi de çalıştırmayı deniyorum.
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
Yani soru, neden benim durukyöntem özniteliği olmadan ikinci metodu olamaz:
from Car import Car
mustang = Car('Ford', 'Mustang')
mustang.makeFirstNoise()
mustang.makeSecondNoise()
Bu çıkış mı? Bir staticmethod
olarak ilan değil çünkü otomatik bir argüman, self
geçirilir çünkü
def makeSecondNoise():
return "Mweeeeeeeh!"
print(mustang.makeSecondNoise())