⚠️ادامه پست قبل :
def __len__(self):
return random.randint(0, len(self.cont)*2)
vague_list = VagueList(["A", "B", "C", "D", "E"])
print(len(vague_list))
print(len(vague_list))
print(vague_list[2])
print(vague_list[2])
Result:
>>>
6
7
D
C
>>>
ما تابع ()len را برای کلاس VagueList برای بازگرداندن یک عدد تصادفی نوشته ایم.
تابع indexing هم یک مقدار تصادفی را در یک محدوده از لیست نمایش می دهد.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
def __len__(self):
return random.randint(0, len(self.cont)*2)
vague_list = VagueList(["A", "B", "C", "D", "E"])
print(len(vague_list))
print(len(vague_list))
print(vague_list[2])
print(vague_list[2])
Result:
>>>
6
7
D
C
>>>
ما تابع ()len را برای کلاس VagueList برای بازگرداندن یک عدد تصادفی نوشته ایم.
تابع indexing هم یک مقدار تصادفی را در یک محدوده از لیست نمایش می دهد.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶١:کدام متد magic با x [y] = z ساخته شده است؟
1️⃣: y.__getitem__(x, z)
▫ ️||||||||||||||||||||||44%(4)
2️⃣: x.setitem(z, y)
▫ ️|||||11%(1)
3️⃣: x.__setitem__(y, z)
▫ ️||||||||||||||||||||||44%(4)
👥: 9شرکت در نظر سنجی
1️⃣: y.__getitem__(x, z)
▫ ️||||||||||||||||||||||44%(4)
2️⃣: x.setitem(z, y)
▫ ️|||||11%(1)
3️⃣: x.__setitem__(y, z)
▫ ️||||||||||||||||||||||44%(4)
👥: 9شرکت در نظر سنجی
✍️"Object Life cycle"
دوره ی زندگی یک شی دوره ی ساخته شدن، دستکاری و تخریب آن است. مرحله اول object life cycle یک شی تعریف کلاسی است که به آن تعلق دارد. مرحله بعدی، نمونه سازی است، یعنی زمانی که "init" فراخوانی می شود. حافظه اختصاص داده شده به این کلاس، برای ذخیره سازی نمونه کلاس است. درست قبل از این فرایند، متد "new" از کلاس صدا زده می شود. این متد معمولا تنها در موارد خاصی دوباره نویسی می شود. پس از این فرایند، شی آماده استفاده شدن است.
سپس کد های دیگر می توانند با این شیء و توابع در آن تعامل کنند. در نهایت، که استفاده از آن تمام شد، می توان آن کلاس یا شی را از بین برد.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
دوره ی زندگی یک شی دوره ی ساخته شدن، دستکاری و تخریب آن است. مرحله اول object life cycle یک شی تعریف کلاسی است که به آن تعلق دارد. مرحله بعدی، نمونه سازی است، یعنی زمانی که "init" فراخوانی می شود. حافظه اختصاص داده شده به این کلاس، برای ذخیره سازی نمونه کلاس است. درست قبل از این فرایند، متد "new" از کلاس صدا زده می شود. این متد معمولا تنها در موارد خاصی دوباره نویسی می شود. پس از این فرایند، شی آماده استفاده شدن است.
سپس کد های دیگر می توانند با این شیء و توابع در آن تعامل کنند. در نهایت، که استفاده از آن تمام شد، می توان آن کلاس یا شی را از بین برد.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶٢:کدام مرحله با init تطابق دارد؟
1️⃣: destruction(تخریب)
▫ ️0%(0)
2️⃣: instantiation(اکتشاف)
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
3️⃣: definition(تعریف)
▫ ️0%(0)
👥: 8شرکت در نظر سنجی
1️⃣: destruction(تخریب)
▫ ️0%(0)
2️⃣: instantiation(اکتشاف)
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
3️⃣: definition(تعریف)
▫ ️0%(0)
👥: 8شرکت در نظر سنجی
✍️Object life cycle
هنگامی که یک شیء نابود می شود، حافظه اختصاص داده شده به آن آزاد می شود و می تواند برای اهداف دیگر مورد استفاده قرار گیرد.
تخریب یک شی وقتی رخ میدهد که شمارش مرجع (reference count) آن صفر شود. شماره مرجع، تعداد متغیرها و عناصر دیگری است که به یک شی اشاره می کنند. اگر چیزی به آن اشاره نکرده (شمارش مرجع صفر است)، هیچ چیز با آن ارتباط برقرار نمی کند، بنابراین می توان آن را با خیال راحت حذف کرد. در برخی موارد، دو (یا بیشتر) شی را فقط به هم ارجاع می کنند پس بنابراین می توان آن را نیز حذف کرد. عبارت delتعداد مرجع یک شی را یکی کم می کند و این امر اغلب منجر به حذف آن می شود. فرآیند حذف اشیاء زمانی که دیگر به آن شی احتیاجی نیست، جمع آوری زباله نامیده میشود.
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
هنگامی که یک شیء نابود می شود، حافظه اختصاص داده شده به آن آزاد می شود و می تواند برای اهداف دیگر مورد استفاده قرار گیرد.
تخریب یک شی وقتی رخ میدهد که شمارش مرجع (reference count) آن صفر شود. شماره مرجع، تعداد متغیرها و عناصر دیگری است که به یک شی اشاره می کنند. اگر چیزی به آن اشاره نکرده (شمارش مرجع صفر است)، هیچ چیز با آن ارتباط برقرار نمی کند، بنابراین می توان آن را با خیال راحت حذف کرد. در برخی موارد، دو (یا بیشتر) شی را فقط به هم ارجاع می کنند پس بنابراین می توان آن را نیز حذف کرد. عبارت delتعداد مرجع یک شی را یکی کم می کند و این امر اغلب منجر به حذف آن می شود. فرآیند حذف اشیاء زمانی که دیگر به آن شی احتیاجی نیست، جمع آوری زباله نامیده میشود.
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⚠️ادامه پست قبل :
به طور خلاصه، تعداد مرجع زمانی افزایش می یابد که یک نام جدید به آن اختصاص داده شود یا در یک کانتینر قرار گیرد (مثلا لیست). شمارش مرجع ابعاد زمانی کاهش می یابد که با del حذف شود، در این حالت، مرجع آن مجددا محاسبه می شود یا مرجع آن حذف می شود. هنگامی که تعداد مرجع یک شی به صفر برسد، پایتون آن را به طور خودکار حذف می کند.
a = 42 # Create object <42>
b = a # Increase ref. count of <42>
c = [a] # Increase ref. count of <42>
del a # Decrease ref. count of <42>
b = 100 # Decrease ref. count of <42>
c[0] = -1 # Decrease ref. count of <42>
⚠️زبانهای سطح پایین مثل C این نوع از مدیریت حافظه خودکار را ندارند.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
به طور خلاصه، تعداد مرجع زمانی افزایش می یابد که یک نام جدید به آن اختصاص داده شود یا در یک کانتینر قرار گیرد (مثلا لیست). شمارش مرجع ابعاد زمانی کاهش می یابد که با del حذف شود، در این حالت، مرجع آن مجددا محاسبه می شود یا مرجع آن حذف می شود. هنگامی که تعداد مرجع یک شی به صفر برسد، پایتون آن را به طور خودکار حذف می کند.
a = 42 # Create object <42>
b = a # Increase ref. count of <42>
c = [a] # Increase ref. count of <42>
del a # Decrease ref. count of <42>
b = 100 # Decrease ref. count of <42>
c[0] = -1 # Decrease ref. count of <42>
⚠️زبانهای سطح پایین مثل C این نوع از مدیریت حافظه خودکار را ندارند.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶٣:__del__ متد Magic چیست؟
1️⃣: Class.del(instance)
▫ ️0%(0)
2️⃣: instance.del()
▫ ️0%(0)
3️⃣: del instance
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(11)
👥: 11شرکت در نظر سنجی
1️⃣: Class.del(instance)
▫ ️0%(0)
2️⃣: instance.del()
▫ ️0%(0)
3️⃣: del instance
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(11)
👥: 11شرکت در نظر سنجی
سلام و عرض ادب
ضمن پوزش بابت تاخیری که در آموزش ها ایجاد شد. خانم مهندس فراهانی زحمت کشیدن ادامه آموزش ها رو داخل کانال میذارند.
برای تابستون مجدداً ما آموزش مقدماتی رو داریم اما منبع آموزش sololeran نخواهد بود و سعی می کنیم در سطح قابل فهمتر مطالب بیان گردد.
جزئیات تمام دوره ها رو باید از کانال اصلی چالش پایتون (@pythonchallenge) پیگیری نمایید.
امیدواریم در ادامه همین آموزش در کنارمون باشید و برای تابستون که برنامه متنوع تری داریم هم با ما همراه شوید.
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
ضمن پوزش بابت تاخیری که در آموزش ها ایجاد شد. خانم مهندس فراهانی زحمت کشیدن ادامه آموزش ها رو داخل کانال میذارند.
برای تابستون مجدداً ما آموزش مقدماتی رو داریم اما منبع آموزش sololeran نخواهد بود و سعی می کنیم در سطح قابل فهمتر مطالب بیان گردد.
جزئیات تمام دوره ها رو باید از کانال اصلی چالش پایتون (@pythonchallenge) پیگیری نمایید.
امیدواریم در ادامه همین آموزش در کنارمون باشید و برای تابستون که برنامه متنوع تری داریم هم با ما همراه شوید.
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️مخفی کردن اطلاعات
بخش کلیدی برنامه نویسی شی گرا، کپسوله کردن داده (encapsulating) است که شامل بسته بندی متغیرهای مرتبط و توابع مربوطه در یک نمونه از یک کلاس است. یک مفهوم مرتبط، پنهان سازی اطلاعات است، که بیان می کند جزئیات پیاده سازی یک کلاس باید پنهان شود و یک رابط استاندارد ساده برای کسانی که می خواهند از کلاس استفاده کنند، ارائه شود. در زبان های برنامه نویسی دیگر، این کار معمولا با روش صفات (attribute) خصوصی انجام می شود که از دسترسی خارجی به این توابع و صفات را جلوگیری می کند.
پایتون اغلب ادعا می کند که "ما همه افراد بزرگسال در اینجا هستیم". به این معنی که شما نباید محدودیتی را برای دسترسی به قسمت های یک کلاس قرار دهید. بدین ترتیب هیچ تابعی وجود ندارد که خصوصیات آن مخفی باشد.
📌با این حال، راه هایی برای جلوگیری از دسترسی کاربران به بخش های یک کلاس وجود دارد، از قبیل نشان دادن اینکه این یک جزئیات اجرایی است و استفاده از آن دارای ریسک است.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
بخش کلیدی برنامه نویسی شی گرا، کپسوله کردن داده (encapsulating) است که شامل بسته بندی متغیرهای مرتبط و توابع مربوطه در یک نمونه از یک کلاس است. یک مفهوم مرتبط، پنهان سازی اطلاعات است، که بیان می کند جزئیات پیاده سازی یک کلاس باید پنهان شود و یک رابط استاندارد ساده برای کسانی که می خواهند از کلاس استفاده کنند، ارائه شود. در زبان های برنامه نویسی دیگر، این کار معمولا با روش صفات (attribute) خصوصی انجام می شود که از دسترسی خارجی به این توابع و صفات را جلوگیری می کند.
پایتون اغلب ادعا می کند که "ما همه افراد بزرگسال در اینجا هستیم". به این معنی که شما نباید محدودیتی را برای دسترسی به قسمت های یک کلاس قرار دهید. بدین ترتیب هیچ تابعی وجود ندارد که خصوصیات آن مخفی باشد.
📌با این حال، راه هایی برای جلوگیری از دسترسی کاربران به بخش های یک کلاس وجود دارد، از قبیل نشان دادن اینکه این یک جزئیات اجرایی است و استفاده از آن دارای ریسک است.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶۴: متد خصوصی ( private) در پایتون چیست؟
1️⃣: یک متد با نشانه های __ در ابتدا و انتها
▫ ️0%(0)
2️⃣: یک متد خارجی که خارج از کد، از کد استفاده می کند
▫ ️0%(0)
3️⃣: متد خارج از کلاس نمی تواند به کد ها دسترسی پیدا کند
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(9)
👥: 9شرکت در نظر سنجی
1️⃣: یک متد با نشانه های __ در ابتدا و انتها
▫ ️0%(0)
2️⃣: یک متد خارجی که خارج از کد، از کد استفاده می کند
▫ ️0%(0)
3️⃣: متد خارج از کلاس نمی تواند به کد ها دسترسی پیدا کند
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(9)
👥: 9شرکت در نظر سنجی
✍️مخفی کردن اطلاعات - (قسمت دوم)
توابع و صفات خصوصی (private) در ابتدایشان دارای یک _ (underline) هستند. این نشان می دهد که آنها خصوصی هستند و نباید توسط کد خارجی استفاده شوند. با این حال، اغلب تنها یک نشانه است، و از دسترسی به آن ها توسط کد خارجی جلوگیری نمی کند. تنها اثر واقعی آن این است که دستور
from mpdule_name import *
متغیرهایی را که در ابتدای آن ها یک _ است را import نمی کند.
مثال :
class Queue:
def __init__(self, contents):
self._hiddenlist = list(contents)
def push(self, value):
self._hiddenlist.insert(0, value)
def pop(self):
return self._hiddenlist.pop(-1)
def __repr__(self):
return "Queue({})".format(self._hiddenlist)
queue = Queue([1, 2, 3])
print(queue)
queue.push(0)
print(queue)
queue.pop()
print(queue)
print(queue._hiddenlist)
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
توابع و صفات خصوصی (private) در ابتدایشان دارای یک _ (underline) هستند. این نشان می دهد که آنها خصوصی هستند و نباید توسط کد خارجی استفاده شوند. با این حال، اغلب تنها یک نشانه است، و از دسترسی به آن ها توسط کد خارجی جلوگیری نمی کند. تنها اثر واقعی آن این است که دستور
from mpdule_name import *
متغیرهایی را که در ابتدای آن ها یک _ است را import نمی کند.
مثال :
class Queue:
def __init__(self, contents):
self._hiddenlist = list(contents)
def push(self, value):
self._hiddenlist.insert(0, value)
def pop(self):
return self._hiddenlist.pop(-1)
def __repr__(self):
return "Queue({})".format(self._hiddenlist)
queue = Queue([1, 2, 3])
print(queue)
queue.push(0)
print(queue)
queue.pop()
print(queue)
print(queue._hiddenlist)
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️ادامه پست قبلی :
خروجی :
>>>
Queue([1, 2, 3])
Queue([0, 1, 2, 3])
Queue([0, 1, 2])
[0, 1, 2]
>>>
📌در کد بالا، hiddenlist_ به عنوان متغیر خصوصی علامت گذاری شده است، اما همچنان در خارج کد می تواند مشاهده شود. تابع جادویی "repr " برای نمایش رشته ی نمونه مورد استفاده قرار می گیرد.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
خروجی :
>>>
Queue([1, 2, 3])
Queue([0, 1, 2, 3])
Queue([0, 1, 2])
[0, 1, 2]
>>>
📌در کد بالا، hiddenlist_ به عنوان متغیر خصوصی علامت گذاری شده است، اما همچنان در خارج کد می تواند مشاهده شود. تابع جادویی "repr " برای نمایش رشته ی نمونه مورد استفاده قرار می گیرد.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶۵:منظور از پیشوند نام یک متد با یک تاکید اصلی چیست؟
1️⃣: برا جلوگیری از استفاده آن توسط کد خارجی
▫ ️0%(0)
2️⃣: برای علامت گذاری به عنوان یک متد خصوصی
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
3️⃣: برای دسترسی سریع تر
▫ ️0%(0)
👥: 8شرکت در نظر سنجی
1️⃣: برا جلوگیری از استفاده آن توسط کد خارجی
▫ ️0%(0)
2️⃣: برای علامت گذاری به عنوان یک متد خصوصی
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
3️⃣: برای دسترسی سریع تر
▫ ️0%(0)
👥: 8شرکت در نظر سنجی
✍️ مخفی کردن اطلاعات - (قسمت سوم)
توابع و صفاتی که به صورت قوی خصوصی شده باشند در ابتدایشان دارای دو _ (underline) هستند. این یعنی اینکه از خارج کد نمی توان به این مقادیر دسترسی پیدا کنند.
هدف از این کار، این نیست که اطمینان حاصل شود که آنها خصوصی نگه داشته شوند، اما برای جلوگیری از اشکالاتی مثل این است که دو زیر کلاس صفات مشترک داشته باشند.البته این صفات باز هم از خارج کد قابلست دسترسی دارند، اما با یک نام متفاوت.
تابع privatemethod__ کلاس Spam می تواند به صورت خارجی با روش _spam__privatemethod مورد استفاده قرار گیرد.
مثال:
class Spam:
__egg = 7
def print_egg(self):
print(self.egg)
s = Spam()
s.print_egg()
print(s._Spam__egg)
print(s.__egg)
خروجی :
>>>
7
7
AttributeError: 'Spam' object has no attribute '__egg'
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
توابع و صفاتی که به صورت قوی خصوصی شده باشند در ابتدایشان دارای دو _ (underline) هستند. این یعنی اینکه از خارج کد نمی توان به این مقادیر دسترسی پیدا کنند.
هدف از این کار، این نیست که اطمینان حاصل شود که آنها خصوصی نگه داشته شوند، اما برای جلوگیری از اشکالاتی مثل این است که دو زیر کلاس صفات مشترک داشته باشند.البته این صفات باز هم از خارج کد قابلست دسترسی دارند، اما با یک نام متفاوت.
تابع privatemethod__ کلاس Spam می تواند به صورت خارجی با روش _spam__privatemethod مورد استفاده قرار گیرد.
مثال:
class Spam:
__egg = 7
def print_egg(self):
print(self.egg)
s = Spam()
s.print_egg()
print(s._Spam__egg)
print(s.__egg)
خروجی :
>>>
7
7
AttributeError: 'Spam' object has no attribute '__egg'
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست١۶۵:چگونه ویژگی a __ از کلاس b به خارج از کلاس دسترسی پیدا می کند؟
1️⃣: _b__a
▫ ️|||||||||||||||||||||||||||||||||||||||||||||90%(9)
2️⃣: _a__b
▫ ️0%(0)
3️⃣: __b_a
▫ ️|||||10%(1)
👥: 10شرکت در نظر سنجی
1️⃣: _b__a
▫ ️|||||||||||||||||||||||||||||||||||||||||||||90%(9)
2️⃣: _a__b
▫ ️0%(0)
3️⃣: __b_a
▫ ️|||||10%(1)
👥: 10شرکت در نظر سنجی
✍️توابع کلاس
توابع اشیائی که تا به حال مورد بررسی قرار گرفته اند، توسط یک فراخوان از کلاس فراخوانی میشوند و سپس به پارامتر self تابع منتقل می شوند. توابع های کلاس متفاوت هستند - آنها توسط یک کلاس فراخوانی می شوند، که به پارامتر cls تابع فرستاده می شوند.
توابع کلاس با استفاده از classmethod decorator نشانه گزاری می شوند.
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def calculate_area(self):
return self.width * self.height
@classmethod
def new_square(cls, side_length):
return cls(side_length, side_length)
square = Rectangle.new_square(5)
print(square.calculate_area())
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
توابع اشیائی که تا به حال مورد بررسی قرار گرفته اند، توسط یک فراخوان از کلاس فراخوانی میشوند و سپس به پارامتر self تابع منتقل می شوند. توابع های کلاس متفاوت هستند - آنها توسط یک کلاس فراخوانی می شوند، که به پارامتر cls تابع فرستاده می شوند.
توابع کلاس با استفاده از classmethod decorator نشانه گزاری می شوند.
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def calculate_area(self):
return self.width * self.height
@classmethod
def new_square(cls, side_length):
return cls(side_length, side_length)
square = Rectangle.new_square(5)
print(square.calculate_area())
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️ادامه پست قبل :
خروجی :
>>>
25
>>>
در اینجا new_method یک تابع کلاس است و در کلاس به نام یک نمونه از کلاس فراخوانی می شود. این یک شی جدید از کلاس cls را بازمی گرداند.
از لحاظ فنی، پارامترهای self و cls فقط توافقی هستند؛ آنها را می توان به هر نام دیگری تغییر داد. با این حال، آنها به طور جهانی دنبال می شوند، بنابراین عاقلانه است که از همین نام ها استفاده کنیم.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
خروجی :
>>>
25
>>>
در اینجا new_method یک تابع کلاس است و در کلاس به نام یک نمونه از کلاس فراخوانی می شود. این یک شی جدید از کلاس cls را بازمی گرداند.
از لحاظ فنی، پارامترهای self و cls فقط توافقی هستند؛ آنها را می توان به هر نام دیگری تغییر داد. با این حال، آنها به طور جهانی دنبال می شوند، بنابراین عاقلانه است که از همین نام ها استفاده کنیم.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶۶:جاهای خالی را به صورتی که متد کلاس () sayHi ایجاد شود پر کنید.
class Person:
def __init__(self, name):
self.name = name
....................
......... sayHi(cls):
print("Hi")
1️⃣: classmethod, def
▫ ️0%(0)
2️⃣: @classmethod, def
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(9)
3️⃣: Def, @classmethod
▫ ️0%(0)
👥: 9شرکت در نظر سنجی
class Person:
def __init__(self, name):
self.name = name
....................
......... sayHi(cls):
print("Hi")
1️⃣: classmethod, def
▫ ️0%(0)
2️⃣: @classmethod, def
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(9)
3️⃣: Def, @classmethod
▫ ️0%(0)
👥: 9شرکت در نظر سنجی
✍️توابع Static
توابع استاتیک شبیه به توابع کلاس هستند، با این تفاوت که هیچ ورودی اضافی ای دریافت نمی کنند. آنها با staticmethod decorator ها مشخص می شوند.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
@staticmethod
def validate_topping(topping):
if topping == "pineapple":
raise ValueError("No pineapples!")
else:
return True
ingredients = ["cheese", "onions", "spam"]
if all(Pizza.validate_topping(i) for i in ingredients):
pizza = Pizza(ingredients)
📌توابع استاتیک مانند توابع ساده عمل می کنند، به جز اینکه شما می توانید آنها را از یک نمونه از کلاس فراخوانی کنید.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
توابع استاتیک شبیه به توابع کلاس هستند، با این تفاوت که هیچ ورودی اضافی ای دریافت نمی کنند. آنها با staticmethod decorator ها مشخص می شوند.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
@staticmethod
def validate_topping(topping):
if topping == "pineapple":
raise ValueError("No pineapples!")
else:
return True
ingredients = ["cheese", "onions", "spam"]
if all(Pizza.validate_topping(i) for i in ingredients):
pizza = Pizza(ingredients)
📌توابع استاتیک مانند توابع ساده عمل می کنند، به جز اینکه شما می توانید آنها را از یک نمونه از کلاس فراخوانی کنید.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۶٧:کدام یک از متد های زیر به متد static شبیه تر است؟
1️⃣: def spam(x, y):
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
2️⃣: def spam(cls, x, y):
▫ ️0%(0)
3️⃣: def spam(self, x, y):
▫ ️0%(0)
👥: 8شرکت در نظر سنجی
1️⃣: def spam(x, y):
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(8)
2️⃣: def spam(cls, x, y):
▫ ️0%(0)
3️⃣: def spam(self, x, y):
▫ ️0%(0)
👥: 8شرکت در نظر سنجی
✍️properties
این روشی است که دسترسی به یک ویژگی از نمونه ی کلاس را ساماندهی می کند. این روش با قرار داده property decorator در بالای تابع ایجاد می شود. یک استفاده معمول از این روش این است که یک صفت کلاس را کاری کنیم که فقط قابل خواندن (read only) باشد.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
@property
def pineapple_allowed(self):
return False
pizza = Pizza(["cheese", "tomato"])
print(pizza.pineapple_allowed)
pizza.pineapple_allowed = True
خروجی :
>>>
False
AttributeError: can't set attribute
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
این روشی است که دسترسی به یک ویژگی از نمونه ی کلاس را ساماندهی می کند. این روش با قرار داده property decorator در بالای تابع ایجاد می شود. یک استفاده معمول از این روش این است که یک صفت کلاس را کاری کنیم که فقط قابل خواندن (read only) باشد.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
@property
def pineapple_allowed(self):
return False
pizza = Pizza(["cheese", "tomato"])
print(pizza.pineapple_allowed)
pizza.pineapple_allowed = True
خروجی :
>>>
False
AttributeError: can't set attribute
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge