Python Inner Classes

பைத்தான் உள் வகுப்புகள்

Python Inner Classes

ஒரு உள் வகுப்பு என்பது மற்றொரு வகுப்புக்குள் வரையறுக்கப்பட்ட ஒரு வகுப்பு. உள் வகுப்பு வெளி வகுப்பின் பண்புகள் மற்றும் முறைகளை அணுக முடியும்.

ஒரே இடத்தில் மட்டுமே பயன்படுத்தப்படும் வகுப்புகளை தொகுப்பதற்கு உள் வகுப்புகள் பயனுள்ளதாக இருக்கும், இது உங்கள் குறியீட்டை மேலும் ஒழுங்கமைக்க உதவுகிறது.

எடுத்துக்காட்டு

உள் வகுப்பை உருவாக்கு:

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

🔍 குறிப்பு:

நீங்கள் இந்த வழியில் உள் வகுப்பை அணுகலாம்: outer_instance.Inner(). இது உள் வகுப்பின் ஒரு பொருளை உருவாக்குகிறது.

உள் வகுப்பிலிருந்து வெளி வகுப்பை அணுகுதல்

பைத்தானில் உள் வகுப்புகளுக்கு தானாகவே வெளி வகுப்பு நிகழ்வு அணுகல் இல்லை.

உள் வகுப்பு வெளி வகுப்பை அணுக வேண்டுமென்றால், வெளி வகுப்பு நிகழ்வை ஒரு அளவுருவாக அனுப்ப வேண்டும்:

எடுத்துக்காட்டு

வெளி வகுப்பு நிகழ்வை உள் வகுப்பிற்கு அனுப்பவும்:

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

⚠️ முக்கியமானது:

பைத்தானில் உள் வகுப்புகளுக்கு, வெளி வகுப்பின் பண்புகளை தானாகவே அணுக முடியாது. வெளி வகுப்பு உதாரணத்தை வெளிப்படையாக அனுப்ப வேண்டும்.

நடைமுறை எடுத்துக்காட்டு

வெளி வகுப்பின் சூழலுக்குள் மட்டுமே பயன்படுத்தப்படும் உதவி வகுப்புகளை உருவாக்க உள் வகுப்புகள் பயனுள்ளதாக இருக்கும்:

எடுத்துக்காட்டு

காரின் இயந்திரத்தைக் குறிக்க உள் வகுப்பைப் பயன்படுத்தவும்:

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

மேலும் எடுத்துக்காட்டுகள்

எடுத்துக்காட்டு

கல்லூரி மாணவர் உள் வகுப்புகள்:

class University:
  def __init__(self, name):
    self.name = name
    self.departments = []

  class Department:
    def __init__(self, dept_name):
      self.dept_name = dept_name
      self.students = []

    def add_student(self, student_name):
      self.students.append(student_name)
      print(f"Added {student_name} to {self.dept_name}")

uni = University("ABC University")
cs_dept = uni.Department("Computer Science")
cs_dept.add_student("John")
cs_dept.add_student("Jane")

எடுத்துக்காட்டு

ஒட்டல் உள் வகுப்புகள்:

class Hotel:
  def __init__(self, name):
    self.name = name

  class Room:
    def __init__(self, room_number, room_type):
      self.room_number = room_number
      self.room_type = room_type
      self.is_occupied = False

    def book(self):
      self.is_occupied = True
      print(f"Room {self.room_number} booked")

hotel = Hotel("Grand Plaza")
room101 = hotel.Room(101, "Suite")
room101.book()

முக்கிய புள்ளிகள்

சீரமைப்பு

உள் வகுப்புகள் தொடர்புடைய வகுப்புகளை ஒன்றாக வைத்திருக்க உதவுகின்றன, குறியீட்டை அதிகம் ஒழுங்கமைக்கின்றன.

நோக்குநிலை

உள் வகுப்புகள் ஒரு சூழலுக்குள் மட்டுமே பயன்படுத்தப்படும் வகுப்புகளுக்கு இணக்கமானது.

செயலாக்கம்

உள் வகுப்புகள் வெளி வகுப்பின் பண்புகளைத் தானாகவே அணுக முடியாது; வெளிப்படையாக அனுப்பப்பட வேண்டும்.

💡 பரிந்துரை:

உள் வகுப்புகளை வெளி வகுப்பின் சூழலுக்குள் மட்டுமே பயனுள்ளதாக இருக்கும் சிறிய, தனித்துவமான செயல்பாட்டு அலகுகளை உருவாக்கப் பயன்படுத்தவும்.

பயிற்சி

பைத்தானில் உள் வகுப்பு என்றால் என்ன?

மற்றொரு வகுப்பிலிருந்து மரபுரிமையாகப் பெறும் வகுப்பு
✗ தவறு! இது மரபுரிமை, உள் வகுப்பு அல்ல
மற்றொரு வகுப்புக்குள் வரையறுக்கப்பட்ட வகுப்பு
✓ சரி! உள் வகுப்பு என்பது மற்றொரு வகுப்புக்குள் வரையறுக்கப்பட்ட ஒரு வகுப்பாகும்
தனியார் பண்புகளைக் கொண்ட வகுப்பு
✗ தவறு! இது இணைத்தல் (encapsulation), உள் வகுப்பு அல்ல