متد init_subclass در پایتون
در این ویدیو با تابع init_subclass در پایتون آشنا خواهید شد. تابع init_subclass برای کنترل ایجاد شدن کلاس های فرزند استفاده میشود. این تابع یک classmethod بوده که اگر شما آن را به شکل یک متد معمولی ایجاد کنید، پایتون به شکل اتوماتیک آن را به یک class method تبدیل خواهد کرد. ساختار کلی این تابع به شکل زیر است:
class.__init_subclass__(cls)
ویدیو پیشنهادی: آموزش وراثت چندگانه و MRO در پایتون
در مثال زیر مشخص است که به محض ایجاد کردن کلاس فرزند، تابع init_subclass فعال خواهد شد:
class Parent:
def __init_subclass__(cls):
print('Subclass of Parent Created!')
class Child(Parent):
pass
# OUTPUT
Subclass of Parent Created!
دقت کنید که این تابع در زمان ایجاد شدن کلاس فرزند فعال خواهد شد و ربطی به ایجاد کردن آبجکت از کلاس ندارد.
اگر کلاس سومی از کلاس فرزند ارثبری کند باعث فعال شدن init_subclass کلاس پدر خواهد شد:
class Parent:
def __init_subclass__(cls):
print('Subclass of Parent Created!')
class Child(Parent):
pass
class Grandchild(Child):
pass
# OUTPUT
Subclass of Parent Created!
Subclass of Parent Created!
اگر هر دو کلاس پدر و فرزند دارای متد init_subclass باشند، نزدیکترین تابع فعال خواهد شد:
class Parent:
def __init_subclass__(cls):
print('AAA')
class Child(Parent):
def __init_subclass__(cls):
print('BBB')
class Grandchild(Child):
pass
# OUTPUT
AAA # --> Output of Child()
BBB # --> Output of Grandchild()
دوره پیشنهادی: دوره آموزش رایگان پایتون
ارسال نظر