آشنایی با اتریبیوت های از پیش ساخته در کلاس های پایتون
پس از تعریف یک کلاس در برنامه ی پایتون، اتریبیوت های از پیش ساخته ای به آن کلاس افزوده می شود. این اتریبیوت ها کارکردهای متنوعی دارند که با برخی از آن ها آشنا خواهیم شد. برای این منظور برنامه ی زیر را بررسی خواهیم کرد:
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>}