آشنایی با اتریبیوت های از پیش ساخته در کلاس های پایتون


پس از تعریف یک کلاس در برنامه ی پایتون، اتریبیوت های از پیش ساخته ای به آن کلاس افزوده می شود. این اتریبیوت ها کارکردهای متنوعی دارند که با برخی از آن ها آشنا خواهیم شد. برای این منظور برنامه ی زیر را بررسی خواهیم کرد:

class Student:
    'Common base class for all students'
    count = 0
    def __init__(self, name, family):
      self.name = name
      self.family = family
      Student.count += 1;
   
    def displayCount(self):
     print("Total Student : ", Student.count)

    def displayStudent(self):
     print("Name : ", self.name,  ", family: ", self.salary)

print("Student.__doc__:", Student.__doc__)
print("Student.__name__:", Student.__name__)
print("Student.__module__:", Student.__module__)
print("Student.__bases__:", Student.__bases__)
print("Student.__dict__:", Student.__dict__)

در این برنامه ابتدا کلاس Student تعریف و سپس از فانکشن پرینت برای چاپ مقدار اتریبیوت های از پیش تعریف شده برای این کلاس استفاده شده است. اولین اتریبیوت __doc__ است که داکیومنت مربوط به کلاس را نشان می دهد که در مورد کلاس Student همان کامنتی است که در خط اول بدنه ی تعریف کلاس آمده است:

print("Student.__doc__:", Student.__doc__)
>>> Student.__doc__: Common base class for all students

همان طور که می بینید برای استفاده از اتریبیوت های از پیش ساخته در کلاس ها باید نام کلاس را به همراه یک دات (.) و در ادامه ی آن نام اتریبیوت را بیاوریم. اتریبوت بعدی __name__ است که دربرگیرنده ی نام کلاس است:

print("Student.__name__:", Student.__name__)
>>> Student.__name__: Student

اتریبیوت __module__ نام ماژولی که کلاس در آن تعریف شده است را نشان می دهد:

print("Student.__module__:", Student.__module__)
>>>Student.__module__: __main__

اتریبیوت __bases__ یک شیء تاپل است که کلاس های پایه ای که کلاس جدید از آن ها ارث بری کرده است را نشان می دهد که آن ها را با علامت , از هم جدا می کند. در این جا تنها یک کلاس object به عنوان کلاس پایه استفاده شده است و خروجی این دستور به صورت زیر است:

print("Student.__bases__:", Student.__bases__)
>>>Student.__bases__: (<class 'object'>,)

اتریبیوت دیگر __dict__ ، یک شیء دیکشنری است که تمام اتریبیوت های کلاس در آن ذخیره شده است. برای مثال این شیء در کلاس Student به صورت زیر است:

print("Student.__dict__:", Student.__dict__)
>>>Student.__dict__: {'__module__': '__main__', '__weakref__': <attribute '__weakref__' of 'Student' objects>, 'displayStudent': , 'count': 0, '__init__': , 'displayCount': , '__doc__': 'Common base class for all students', '__dict__': <attribute '__dict__' of 'Student' objects>}
دانلود فایل‌های تمرین
لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
دانیال
دانیال
سلام.
یه سوال.
self دقیقا چی محسوب میشه؟ کلاس؟ آبجکت؟ اتریبیوت؟ ....
محمد علی تفرشی
محمد علی تفرشی
اصطلاحا object refrence بهش میگن و برای ارجاع داده به آبجکتی که پیش از این ساخت شده کاربرد داره.

در پاسخ به

سلام
سلام
با تشکر فراوان از تیم اسکان آکادمی
در برنامۀ نوشته شده در خط آخر کلاس به جای self.salary ، self.family نوشته شده است.
محمدهادی
محمدهادی
میشه در مورد تابع __init__ بیشتر توضیح بدید؟
با توجه با آموزش های قبل در مورد تعریف فانکشن ، الان این تابع 3 تا آرگومان داره self, name, family
بعدش این دستور چجوری اومد؟! : self.name = name
مگه میشه؟ :|

و این : Student.count
اینا چجوریه؟!

Nazeri
Nazeri
ممنون. عالی و مفید