تست ١۵۵:کدام یک از کد های کد نشان دهنده کلاس جدید spam به ارث برده از egg است؟
1️⃣: class Egg(Spam):
▫ ️0%(0)
2️⃣: class Spam(Egg):
▫ ️|||||||||||||||||||||||||||||||||||||||||||87%(13)
3️⃣: class (Spam)Egg:
▫ ️||||||13%(2)
👥: 15شرکت در نظر سنجی
1️⃣: class Egg(Spam):
▫ ️0%(0)
2️⃣: class Spam(Egg):
▫ ️|||||||||||||||||||||||||||||||||||||||||||87%(13)
3️⃣: class (Spam)Egg:
▫ ️||||||13%(2)
👥: 15شرکت در نظر سنجی
✍️وراثت(Inheritance) - (قسمت دوم)
یک کلاس که از کلاس دیگری به ارث می برد، یک زیر کلاس (subclass) نامیده می شود. یک کلاس که از آن به ارث برده می شود، سوپرکلاس(superclass) نامیده می شود.
class Wolf:
def init(self, name, color):
self.name = name
self.color = color
def bark(self):
print("Grr...")
class Dog(Wolf):
def bark(self):
print("Woof")
husky = Dog("Max", "grey")
husky.bark()
Result:
>>>
Woof
>>>
💡در مثال بالا wolf یک سوپر کلاس و dog یک زیر کلاس است.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
یک کلاس که از کلاس دیگری به ارث می برد، یک زیر کلاس (subclass) نامیده می شود. یک کلاس که از آن به ارث برده می شود، سوپرکلاس(superclass) نامیده می شود.
class Wolf:
def init(self, name, color):
self.name = name
self.color = color
def bark(self):
print("Grr...")
class Dog(Wolf):
def bark(self):
print("Woof")
husky = Dog("Max", "grey")
husky.bark()
Result:
>>>
Woof
>>>
💡در مثال بالا wolf یک سوپر کلاس و dog یک زیر کلاس است.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۵۶:خروجی کد زیر چیست ؟
class A:
def method(self):
print(1)
class B(A):
def method(self):
print(2)
B().method()
1️⃣: 2
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(10)
2️⃣: 1
▫ ️0%(0)
👥: 10شرکت در نظر سنجی
class A:
def method(self):
print(1)
class B(A):
def method(self):
print(2)
B().method()
1️⃣: 2
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(10)
2️⃣: 1
▫ ️0%(0)
👥: 10شرکت در نظر سنجی
✍️ وراثت (Inheritance) - (قسمت سوم)
وراثت همچنین می تواند غیر مستقیم باشد. یک کلاس می تواند از دیگری به ارث ببرد و آن کلاس می تواند از یک کلاس سوم به ارث ببرد.
class A:
def method(self):
print("A method")
class B(A):
def another_method(self):
print("B method")
class C(B):
def third_method(self):
print("C method")
c = C()
c.method()
c.another_method()
c.third_method()
Result:
>>>
A method
B method
C method
>>>
⚠️با این حال، ارثی دایره وار امکان پذیر نیست.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
وراثت همچنین می تواند غیر مستقیم باشد. یک کلاس می تواند از دیگری به ارث ببرد و آن کلاس می تواند از یک کلاس سوم به ارث ببرد.
class A:
def method(self):
print("A method")
class B(A):
def another_method(self):
print("B method")
class C(B):
def third_method(self):
print("C method")
c = C()
c.method()
c.another_method()
c.third_method()
Result:
>>>
A method
B method
C method
>>>
⚠️با این حال، ارثی دایره وار امکان پذیر نیست.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست ١۵٧:نتیجه ی کد زیر چیست؟
class A:
def a(self):
print(1)
class B(A):
def a(self):
print(2)
class C(B):
def c(self):
print(3)
c = C()
c.a()
1️⃣: 3
▫ ️0%(0)
2️⃣: 2
▫ ️|||||||||||||||||||||||||||||||||||||||||82%(9)
3️⃣: 1
▫ ️|||||||||18%(2)
👥: 11شرکت در نظر سنجی
class A:
def a(self):
print(1)
class B(A):
def a(self):
print(2)
class C(B):
def c(self):
print(3)
c = C()
c.a()
1️⃣: 3
▫ ️0%(0)
2️⃣: 2
▫ ️|||||||||||||||||||||||||||||||||||||||||82%(9)
3️⃣: 1
▫ ️|||||||||18%(2)
👥: 11شرکت در نظر سنجی
✍️وراثت(Inheritance) - (قسمت چهارم)
تابع super یک تابع وراثتی است که به کلاس والد اشاره دارد. برای پیدا کردن تابع با یک نام خاص در Superclass مورد استفاده قرار گیرد.
class A:
def spam(self):
print(1)
class B(A):
def spam(self):
print(2)
super().spam()
B().spam()
Result:
>>>
2
1
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تابع super یک تابع وراثتی است که به کلاس والد اشاره دارد. برای پیدا کردن تابع با یک نام خاص در Superclass مورد استفاده قرار گیرد.
class A:
def spam(self):
print(1)
class B(A):
def spam(self):
print(2)
super().spam()
B().spam()
Result:
>>>
2
1
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست١۵٨:ابر کلاس یک کلاس چیست؟
1️⃣: اولین کلاس که از آن به ارث می برد
▫ ️0%(0)
2️⃣: کلاس نمونه ای از ابر کلاس است
▫ ️0%(0)
3️⃣: کلاس از ابر کلاس به ارث برده است
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(10)
👥: 10شرکت در نظر سنجی
1️⃣: اولین کلاس که از آن به ارث می برد
▫ ️0%(0)
2️⃣: کلاس نمونه ای از ابر کلاس است
▫ ️0%(0)
3️⃣: کلاس از ابر کلاس به ارث برده است
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(10)
👥: 10شرکت در نظر سنجی
✍️Magic Methods
متدهای Magic متد های ویژه ای هستند که در ابتدا و انتهای اسامی آنها دو _ (underline) وجود دارد.
آنها همچنین به عنوان dunders شناخته می شوند.
تا کنون، تنها موردی که با آن آشنا شدیم __init__ است، اما چندین نوع دیگر نیز وجود دارند.
این توابع برای ایجاد قابلیت هایی که نمی توانند با یک تابع معمولی اجرا شوند، استفاده می شوند. یکی از کاربردهای رایج از آنها، بارگذاری اپراتور است، این به معنی این است که بتوانیم اپراتورهایی را تعریف کنیم برای کلاسها است که اجازه می دهد اپراتورهایی مانند + و * بر روی آنها استفاده شوند.
class Vector2D:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector2D(self.x + other.x, self.y + other.y)
first = Vector2D(5, 7)
second = Vector2D(3, 9)
result = first + second
print(result.x)
print(result.y)
Result:
>>>
8
16
>>>
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
متدهای Magic متد های ویژه ای هستند که در ابتدا و انتهای اسامی آنها دو _ (underline) وجود دارد.
آنها همچنین به عنوان dunders شناخته می شوند.
تا کنون، تنها موردی که با آن آشنا شدیم __init__ است، اما چندین نوع دیگر نیز وجود دارند.
این توابع برای ایجاد قابلیت هایی که نمی توانند با یک تابع معمولی اجرا شوند، استفاده می شوند. یکی از کاربردهای رایج از آنها، بارگذاری اپراتور است، این به معنی این است که بتوانیم اپراتورهایی را تعریف کنیم برای کلاسها است که اجازه می دهد اپراتورهایی مانند + و * بر روی آنها استفاده شوند.
class Vector2D:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector2D(self.x + other.x, self.y + other.y)
first = Vector2D(5, 7)
second = Vector2D(3, 9)
result = first + second
print(result.x)
print(result.y)
Result:
>>>
8
16
>>>
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
💡متد __add__ در قسمت قبل برای تعریف یک رفتار سفارشی برای اپراتور + در کلاس ما ایجاد شد. همانطور که می بینید، ویژگی های متناظر مربوط به اشیاء را به هم اضافه می کند و یک شی جدید را به Result می فرستد. هنگامی که تعریف می شود، می توانیم دو شی کلاس را به هم اضافه کنیم.
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️توابع جادویی
متد های magic برای اپراتور های مشترک:
sub for -
mul for *
truediv for /
floordiv for //
mod for %
pow for **
and for &
xor for ^
or for |
تابع x+y به صورت زیر ترجمه می شود:
x.__add__(y)
در زیر بعضی از توابع کلاس r ذکر شده اند:
class SpecialString:
def __init__(self, cont):
self.cont = cont
def __truediv__(self, other):
line = "=" * len(other.cont)
return "\n".join([self.cont, line, other.cont])
spam = SpecialString("spam")
hello = SpecialString("Hello world!")
print(spam / hello)
Result:
>>>
spam
============
Hello world!
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
متد های magic برای اپراتور های مشترک:
sub for -
mul for *
truediv for /
floordiv for //
mod for %
pow for **
and for &
xor for ^
or for |
تابع x+y به صورت زیر ترجمه می شود:
x.__add__(y)
در زیر بعضی از توابع کلاس r ذکر شده اند:
class SpecialString:
def __init__(self, cont):
self.cont = cont
def __truediv__(self, other):
line = "=" * len(other.cont)
return "\n".join([self.cont, line, other.cont])
spam = SpecialString("spam")
hello = SpecialString("Hello world!")
print(spam / hello)
Result:
>>>
spam
============
Hello world!
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تست١۵٩: () A() ^ B ارزیابی شده است، اگر ()A متد magic را اجرا نکند چه می شود؟
1️⃣: B().__rxor__(A())
▫ ️||||||||||||||||||||||||||||||||||||||||||||89%(8)
2️⃣: A().__xor__(B())
▫ ️0%(0)
3️⃣: B().xor(A())
▫ ️|||||11%(1)
👥: 9شرکت در نظر سنجی
1️⃣: B().__rxor__(A())
▫ ️||||||||||||||||||||||||||||||||||||||||||||89%(8)
2️⃣: A().__xor__(B())
▫ ️0%(0)
3️⃣: B().xor(A())
▫ ️|||||11%(1)
👥: 9شرکت در نظر سنجی
✍️توابع جادویی - (قسمت سوم)
پایتون همچنین توابع جادویی را برای مقایسه فراهم می کند:
__lt__ for <
__le__ for <=
__eq__ for ==
__ne__ for !=
__gt__ for >
__ge__ for >=
اگر __ne__ پیاده سازی نشده باشد، مخالف __eq__ فراخوانی میشود.
⚠️ البته هیچ ارتباطی بین اپراتورهای دیگر وجود ندارد.
class SpecialString:
def __init__(self, cont):
self.cont = cont
def __gt__(self, other):
for index in range(len(other.cont)+1):
result = other.cont[:index] + ">" + self.cont
result += ">" + other.cont[index:]
print(result)
spam = SpecialString("spam")
eggs = SpecialString("eggs")
spam > eggs
Result:
>>>
>spam>eggs
e>spam>ggs
eg>spam>gs
egg>spam>s
eggs>spam>
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
پایتون همچنین توابع جادویی را برای مقایسه فراهم می کند:
__lt__ for <
__le__ for <=
__eq__ for ==
__ne__ for !=
__gt__ for >
__ge__ for >=
اگر __ne__ پیاده سازی نشده باشد، مخالف __eq__ فراخوانی میشود.
⚠️ البته هیچ ارتباطی بین اپراتورهای دیگر وجود ندارد.
class SpecialString:
def __init__(self, cont):
self.cont = cont
def __gt__(self, other):
for index in range(len(other.cont)+1):
result = other.cont[:index] + ">" + self.cont
result += ">" + other.cont[index:]
print(result)
spam = SpecialString("spam")
eggs = SpecialString("eggs")
spam > eggs
Result:
>>>
>spam>eggs
e>spam>ggs
eg>spam>gs
egg>spam>s
eggs>spam>
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️توابع جادویی - (قسمت چهارم)
چند تابع جادویی برای ایجاد کانتینر ها یا نگهداری کننده ها وجود دارد:
__len__ for len()
__getitem__ for indexing
__setitem__ for assigning to indexed values
__delitem__ for deleting indexed values
__iter__ for iteration over objects (e.g., in for loops)
__contains__ for in
توابع جادویی دیگر وجود دارد که ما در اینجا نمی توانیم پوشش دهیم، مانند __call__ برای فراخوانی اشیاء به عنوان توابع.
import random
class VagueList:
def __init__(self, cont):
self.cont = cont
def __getitem__(self, index):
return self.cont[index + random.randint(-1, 1)]
def __len__(self):
return random.randint(0, len(self.cont)*2)
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
چند تابع جادویی برای ایجاد کانتینر ها یا نگهداری کننده ها وجود دارد:
__len__ for len()
__getitem__ for indexing
__setitem__ for assigning to indexed values
__delitem__ for deleting indexed values
__iter__ for iteration over objects (e.g., in for loops)
__contains__ for in
توابع جادویی دیگر وجود دارد که ما در اینجا نمی توانیم پوشش دهیم، مانند __call__ برای فراخوانی اشیاء به عنوان توابع.
import random
class VagueList:
def __init__(self, cont):
self.cont = cont
def __getitem__(self, index):
return self.cont[index + random.randint(-1, 1)]
def __len__(self):
return random.randint(0, len(self.cont)*2)
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @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
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شرکت در نظر سنجی