آموزش کلاسهای درونی(inner) در پایتون
کلاسِ درونی(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. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.