کلاس های داخلی (Inner Classes)
«کلاس داخلی در پایتون» یعنی یک کلاس داخل کلاس دیگر تعریف شود. «کلاس (Class)» قالب ساخت شیء است. این کار، کد را منظم می کند و چیزهای مرتبط را کنار هم نگه می دارد؛ مثل کشوهای یک میز درس.
تعریف کلاس داخلی
کلاس داخلی داخل کلاس بیرونی نوشته می شود. سپس می توان شئ بیرونی ساخت و از نام داخلی استفاده کرد.
class Outer:
def __init__(self):
self.name = "Outer Class"
class Inner:
def __init__(self):
self.name = "Inner Class"
def display(self):
print("This is the inner class")
outer = Outer()
print(outer.name)
دسترسی بیرونی به کلاس داخلی
برای استفاده از کلاس داخلی، اول شئ بیرونی بساز. بعد از روی آن، شئ داخلی بساز.
class Outer:
def __init__(self):
self.name = "Outer"
class Inner:
def __init__(self):
self.name = "Inner"
def display(self):
print("Hello from inner class")
outer = Outer()
inner = outer.Inner()
inner.display()
دسترسی کلاس داخلی به بیرونی
کلاس داخلی به صورت خودکار به نمونه بیرونی دسترسی ندارد. بنابراین، نمونه بیرونی را «ورودی» بده.
class Outer:
def __init__(self):
self.name = "Emil"
class Inner:
def __init__(self, outer):
self.outer = outer
def display(self):
print(f"Outer class name: {self.outer.name}")
outer = Outer()
inner = outer.Inner(outer)
inner.display()
نمونه عملی؛ کمک کلاس داخل کلاس
کلاس داخلی برای کمک کارها عالی است؛ مثل «Engine» داخل «Car».
class Car:
def __init__(self, brand, model):
self.brand = brand
self.model = model
self.engine = self.Engine()
class Engine:
def __init__(self):
self.status = "Off"
def start(self):
self.status = "Running"
print("Engine started")
def stop(self):
self.status = "Off"
print("Engine stopped")
def drive(self):
if self.engine.status == "Running":
print(f"Driving the {self.brand} {self.model}")
else:
print("Start the engine first!")
car = Car("Toyota", "Corolla")
car.drive()
car.engine.start()
car.drive()
چند کلاس داخلی همزمان
یک کلاس می تواند چند کلاس داخلی مرتبط داشته باشد؛ هر کدام مسئول کاری.
class Computer:
def __init__(self):
self.cpu = self.CPU()
self.ram = self.RAM()
class CPU:
def process(self):
print("Processing data...")
class RAM:
def store(self):
print("Storing data...")
computer = Computer()
computer.cpu.process()
computer.ram.store()
گام های تمرینی
- یک کلاس بیرونی بساز و درونش کلاس داخلی بگذار.
- شئ بیرونی و سپس شئ داخلی را بساز و خروجی بگیر.
- نمونه بیرونی را به داخلی بده و داده بخوان.
برای مطالعه مرتبط، فصل کپسوله سازی را ببین. همچنین با مدیریت فایل ادامه بده تا ساختار پروژه ات منظم تر شود.
جمع بندی سریع
- کلاس داخلی، کلاس داخل کلاس بیرونی است.
- برای ساخت داخلی، اول نمونه بیرونی لازم است.
- دسترسی داخلی به بیرونی، با ارسال نمونه انجام می شود.
- برای کارهای کمکی، کلاس داخلی عالی است.
- می توان چند کلاس داخلی مرتبط داشت.