به آموزشگاه مجازی سینا خوش آمدید!

آموزش کلاس‌های درونی(inner) در پایتون

امتیاز
(0)

کلاسِ درونی(inner)، یک کلاس است که در درون یک کلاس دیگر تعریف شده است. کلاس درونی می‌تواند به پروپرتی‌ها و متدهای کلاس بیرونی(outer) دسترسی داشته باشد. کلاس‌های درونی برای گروه‌بندی کردن کلاس‌هایی که تنها در یک مکان مورد استفاده قرار می‌گیرند، استفاده می‌شوند و باعث می‌شوند کدهای ما سازماندهی‌تر شوند. 

مثال شماره 1

ایجاد یک کلاس درونی:

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)

نتیجه:

Outer Class
امتحان کنید

دسترسی به کلاس درونی در بیرون(Outside)

برای دسترسی به کلاس درونی، یک آبجکت از کلاس بیرونی ایجاد کنید و آنگاه از کلاس درونی یک آبجکت ایجاد کنید:

مثال شماره 2

دسترسی به کلاس درونی و ایجاد یک آبجکت:

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()

نتیجه:

Hello from inner class
امتحان کنید

دسترسی به کلاس بیرونی در کلاس درونی

کلاس‌های درونی در پایتون، به طور اتوماتیک به نمونه‌هایِ(instance) کلاس بیرونی دسترسی ندارند. اگر می‌خواهید کلاس درونی به کلاس بیرونی دسترسی داشته باشد، نیاز دارید نمونه‌ی(instance) کلاس بیرونی را بعنوان یک پارامتر، پاس دهید:

مثال شماره 3

پاس دادن نمونه‌ی کلاس بیرونی به کلاس درونی:

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()

نتیجه:

Outer class name: Emil
امتحان کنید

یک مثال برای تمرین

کلاس‌های درونی، برای ایجاد کلاس‌های راهنما(helper) که تنها در داخل کلاس بیرونی استفاده می‌شوند، مفید هستند:

مثال شماره 4

استفاده از یک کلاس درونی برای ارائه دادن انجین یک ماشین:

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()

نتیجه:

Start the engine first!
Engine started
Driving the Toyota Corolla
امتحان کنید

استفاده از چندین کلاس درونی

یک کلاس در پایتون، می‌تواند چندین کلاس درونی(inner classes) داشته باشد:

مثال شماره 5

ایجاد چندین کلاس درونی:

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()

نتیجه:

Processing data...
Storing data...
امتحان کنید

 


منبع: www.w3schools.com/python

 

  • بازدید: 42

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال