سلام
دوستان من موقع نوشتن کلاس های جدیدم مثل مدل زیر عمل میکنم که از مقدار self دیگه نیازی نیست استفاده کنم ولی راستش فقط میدونم این مدلی درسته ولی نمیدونم چرا و فرقشون با هم چیه؟
class reg_new_user:
@staticmethod
def insert_to_database(name,username,password,email,mobile):
userdata = {"name":name,"username":username,"password":password,"email":email,"mobile":mobile}
print(userdata)
مثال زیر رو ببین:
class MyClass:
def method(self):
return 'instance method called', self
@classmethod
def cm(cls):
return 'class method called', cls
@staticmethod
def sm():
return 'static method called'
obj = MyClass()
print(1, obj.method())
print(2, MyClass.method(obj))
print(3,obj.cm())
print(4, MyClass.cm())
print(5, obj.sm())
print(6, MyClass.sm())
print(7, MyClass.method())
در حالت عادی ورودی تابع یک نمونه از کلاسه که در واقع باید یه نمونه رو دریافت کنه و میتونه کارایی رو با self انجام بده(در واقع در مثال بالا نتیجه هر پرینت 1 2یه چیزه)
در حالتی که از classmethod decorator استفاده میشه تابع به جای نمونه خود کلاس رو دریافت میکنه و میتونه تغییرات و کارایی مستقیما رو کلاس انجام بده
در حالتی که از staticmethod decorator استفاده میشه تابع نه شی نه نمونه رو دریافت نمیکنه
من داکیومنتش رو پیدا کردم ولی نمیفهمم داستان چیه
http://docs.python.org/library/functions.html#staticmethod
http://docs.python.org/library/functions.html#classmethod
میشه یه نفر از اساتید ساده بگه داستان چیه؟
مثال زیر رو ببین:
class MyClass:
def method(self):
return 'instance method called', self
@classmethod
def cm(cls):
return 'class method called', cls
@staticmethod
def sm():
return 'static method called'
obj = MyClass()
print(1, obj.method())
print(2, MyClass.method(obj))
print(3,obj.cm())
print(4, MyClass.cm())
print(5, obj.sm())
print(6, MyClass.sm())
print(7, MyClass.method())
در حالت عادی ورودی تابع یک نمونه از کلاسه که در واقع باید یه نمونه رو دریافت کنه و میتونه کارایی رو با self انجام بده(در واقع در مثال بالا نتیجه هر پرینت 1 2یه چیزه)
در حالتی که از classmethod decorator استفاده میشه تابع به جای نمونه خود کلاس رو دریافت میکنه و میتونه تغییرات و کارایی مستقیما رو کلاس انجام بده
در حالتی که از staticmethod decorator استفاده میشه تابع نه شی نه نمونه رو دریافت نمیکنه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟