شمارنده ی یکتا

پرسیده شده
فعالیت 935 روز پیش
دیده شده 332 بار
0

سلام به همه ی دوستان و خسته نباشید به همه ی منتور های دوره خواستم بدونم چرا اینکار اشتباه درمیاد و لطفا یکی اینو میشه trace

کنه

class BaseClass:
	id = 0
	def __init(self):
		BaseClass.id += 1 
فایل پیوست

1
حذف شده

سلااااااااااااااااااام محمد جان

پاسخ به کامنت:

بعله اون اشتباه تایپی بود ببخشید ... چرا مستقیم شمارنده یکتا تو اینیت قرار میدیم اشتباه میخوره چرا حتما باید فانکشن جدا بنویسیم واسش...

 

اینکه داره اشتباه میخوره و درست کار نمیکنه بخاطر این نیست که تو __init__ قرار دادیمش. بخاطر اینه که اگر میخواهیم شمارنده یکتا (یا همون id منحصر به فرد) برای ابجکت هامون داشته باشیم لازمه که جور دیگه ای بنویسیمش.

لازم نیست حتما براش یه فانکشن جدا بنویسیم. ولی خب اینکه براش فانکشن جدا بنویسیم استاندارد تر و تمیز تر هست.

اگر بخواهیم ابجکت های یک کلاس شمارنده یکتا (یا همون id منحصر به فرد) داشته باشن. لازمه جور دیگه ای کلاس و __init__ رو بنویسیم. که یه نمونه اش کد زیر هست:

>>> class BaseClass:
		objects_count = 0
		def __init__(self):
			BaseClass.objects_count += 1
			self.id = BaseClass.objects_count

		
>>> a = BaseClass()
>>> a.id
1
>>> b = BaseClass()
>>> b.id
2
>>> a.id
1
فایل پیوست

محمدعلی رضا

توسط

محمدعلی رضا

18 مهر 00

0
حذف شده

سلاااااااااااااااااااااام محمدجان

ممنون

همچنین خدا قوت به شما

شبت بخیر

نکته ای که پیدا کردم، اسم تابع هست.

اسم تابع رو 

	def __init(self):

گذاشتی. در حالی فک میکنم میخواستی 

	def __init__(self):

بذاري كه هر وقت ابجكتي از كلاس ساخته ميشه اين تابع اجرا بشه.

 

راستي لطفا وقتي اينطور سوالي داري بگو كه چيكار ميخواستي بكني و چي داره اشتباه در مياد.

فایل پیوست

محمدعلی رضا

توسط

محمدعلی رضا

16 مهر 00

حذف شده
بعله اون اشتباه تایپی بود ببخشید ... چرا مستقیم شمارنده یکتا تو اینیت قرار میدیم اشتباه میخوره چرا حتما باید فانکشن جدا بنویسیم واسش...