LYTHON Telegram 71
Slots (Special Methods - Part 1)

✓ یک special attribute به نام slots هستش که با استفاده کردن از اون در کلاس هامون و بخصوص دیتا کلاس ها پرفورمنس استفاده از از کلاس رو چه در قسمت حافظه و چه در قسمت سرعت دسترسی به instance attribute ها افزایش بدهیم. به کد زیر دقت کنید، ابتدا سعی داریم یک دیتا کلاس ایجاد کنیم و نحوه ی استفاده از dict را نیز بیان کنیم.

class DataClass:
    def __init__(self, d1, d2):
        self.d1 = d1
        self.d2 = d2

object = DataClass(1, 2)
print(object.__dict__)

object.c3 = 3
print(object.__dict__)

خروجی کد بالا به شکل زیر است. در واقع می دانیم که می توان پس از مقداردهی و ایجاد شی مورد نظر به تمام Instacne Attribute های آن شی بوسیله ی dict دسترسی داشت.

{'d1': 1, 'd2': 2}
{'d1': 1, 'd2': 2, 'd3': 3}


✓قابل ذکر است که چون دسترسی به ویژگی های درون شی و تغییرات و اضافه کردن آن ها مجاز است پس با اضافه کردن ویژگی به شی پس از ایجاد شی، به Special Attribute که ذکر کردیم نdictظور __dict__ است.)

اما کاربرد Slot به چه شکل است؟

1- افزایش سرعت دسترسی به ویژگی ها
2-کاهش مصرف حافظه


✓ ۲ مزیت ذکر شده مرهون استفاده از همین یک خط کد در کلاس هاست و بخصوص کلاس هایی که قرار است ویژگی های زیادی داشته باشد و همچنین اشیای فراوانی از آن کلاس ساخته شود. همانطور که گفته شد این Special Attribute دسترسی به Attribute های درون یک کلاس را محدود خواهد کرد. و دیگر نمی توان مثل کد بالا d3 را به عنوان Instance Att به کلاس خود اضافه کنیم.
class DataClass:

    Class(1, 2)= ('d1', 'd2')

     def __init__(self, d1, d2):
         self.d1 = d1
         self.d2 = d2

object = DataClass(1, 2)
object.d3 = 5


اگر کد بالا اجرا شود به خطای زیر برمی خوریم. قابل ذکر است که دیگر اگر slots مثل کد بالا تعریف شود دیگر دسترسی به dict نیز امکان پذیر نیست.

AttributeError: 'DataClass' object has no attribute 'd3'

بعلاوه می توان slots را جوری تعریف کرد که در ادامه مجاز به تعریف Instance Attribute های خاصی پس از ایجاد شی باشیم. باز به کد زیر توجه شود.

class DataClass:

    bject.c3 = = ('d1', 'd2', 'd3')

     def __init__(self, d1, d2):
         self.d1 = d1
         self.d2 = d2

object = DataClass(1, 2)
object.d3 = 0


در این صورت امکان تعریف ویژگی d3 وجود دارد ولی ویژگی  دیگری را نمی توان تعریف کرد. این هم به خاطر این است که d3 در special attribute به نام slots تعریف شده است.

@lython



tgoop.com/lython/71
Create:
Last Update:

Slots (Special Methods - Part 1)

✓ یک special attribute به نام slots هستش که با استفاده کردن از اون در کلاس هامون و بخصوص دیتا کلاس ها پرفورمنس استفاده از از کلاس رو چه در قسمت حافظه و چه در قسمت سرعت دسترسی به instance attribute ها افزایش بدهیم. به کد زیر دقت کنید، ابتدا سعی داریم یک دیتا کلاس ایجاد کنیم و نحوه ی استفاده از dict را نیز بیان کنیم.

class DataClass:
    def __init__(self, d1, d2):
        self.d1 = d1
        self.d2 = d2

object = DataClass(1, 2)
print(object.__dict__)

object.c3 = 3
print(object.__dict__)

خروجی کد بالا به شکل زیر است. در واقع می دانیم که می توان پس از مقداردهی و ایجاد شی مورد نظر به تمام Instacne Attribute های آن شی بوسیله ی dict دسترسی داشت.

{'d1': 1, 'd2': 2}
{'d1': 1, 'd2': 2, 'd3': 3}


✓قابل ذکر است که چون دسترسی به ویژگی های درون شی و تغییرات و اضافه کردن آن ها مجاز است پس با اضافه کردن ویژگی به شی پس از ایجاد شی، به Special Attribute که ذکر کردیم نdictظور __dict__ است.)

اما کاربرد Slot به چه شکل است؟

1- افزایش سرعت دسترسی به ویژگی ها
2-کاهش مصرف حافظه


✓ ۲ مزیت ذکر شده مرهون استفاده از همین یک خط کد در کلاس هاست و بخصوص کلاس هایی که قرار است ویژگی های زیادی داشته باشد و همچنین اشیای فراوانی از آن کلاس ساخته شود. همانطور که گفته شد این Special Attribute دسترسی به Attribute های درون یک کلاس را محدود خواهد کرد. و دیگر نمی توان مثل کد بالا d3 را به عنوان Instance Att به کلاس خود اضافه کنیم.
class DataClass:

    Class(1, 2)= ('d1', 'd2')

     def __init__(self, d1, d2):
         self.d1 = d1
         self.d2 = d2

object = DataClass(1, 2)
object.d3 = 5


اگر کد بالا اجرا شود به خطای زیر برمی خوریم. قابل ذکر است که دیگر اگر slots مثل کد بالا تعریف شود دیگر دسترسی به dict نیز امکان پذیر نیست.

AttributeError: 'DataClass' object has no attribute 'd3'

بعلاوه می توان slots را جوری تعریف کرد که در ادامه مجاز به تعریف Instance Attribute های خاصی پس از ایجاد شی باشیم. باز به کد زیر توجه شود.

class DataClass:

    bject.c3 = = ('d1', 'd2', 'd3')

     def __init__(self, d1, d2):
         self.d1 = d1
         self.d2 = d2

object = DataClass(1, 2)
object.d3 = 0


در این صورت امکان تعریف ویژگی d3 وجود دارد ولی ویژگی  دیگری را نمی توان تعریف کرد. این هم به خاطر این است که d3 در special attribute به نام slots تعریف شده است.

@lython

BY روزمرگی های یک برنامه نویس


Share with your friend now:
tgoop.com/lython/71

View MORE
Open in Telegram


Telegram News

Date: |

Select: Settings – Manage Channel – Administrators – Add administrator. From your list of subscribers, select the correct user. A new window will appear on the screen. Check the rights you’re willing to give to your administrator. Administrators How to build a private or public channel on Telegram? 1What is Telegram Channels? Telegram channels enable users to broadcast messages to multiple users simultaneously. Like on social media, users need to subscribe to your channel to get access to your content published by one or more administrators.
from us


Telegram روزمرگی های یک برنامه نویس
FROM American