سرمایه گذاری متفاوت در سال نو 🍎🌱 ۳۵٪ تخفیف نوروزی ➕ حضور رایگان در مسترمایند نخبگان صنعت نرم‌افزار 💻✅
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ محمد یارمحمدی
شمارنده ی یکتا
محمدعلی رضا حل شده توسط محمدعلی رضا

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

کنه

class BaseClass:
	id = 0
	def __init(self):
		BaseClass.id += 1 

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

ممنون

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

شبت بخیر

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

اسم تابع رو 

	def __init(self):

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

	def __init__(self):

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

 

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

محمدعلی رضا ۱۶ مهر ۱۴۰۰، ۲۰:۱۲

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

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

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

 

اینکه داره اشتباه میخوره و درست کار نمیکنه بخاطر این نیست که تو __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
بهترین پاسخ
محمدعلی رضا ۱۸ مهر ۱۴۰۰، ۰۵:۱۲