Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

[Python] Lesson 38 – Inheritance


Inheritance trong OOP là một kỹ thuật cho phép một lớp có thể kế thừa thuộc tính và phương thức từ một lớp khác. Lớp con có thể được tạo ra bằng cách sử dụng từ khóa “class” và kế thừa các thuộc tính và phương thức của lớp cha.

Cú pháp khai báo của Inheritance trong Python:

class ChildClass(ParentClass):
    # Code of child class

Trong đó:

  • ChildClass: là tên của lớp con (subclass)
  • ParentClass: là tên của lớp cha (superclass) mà lớp con kế thừa từ đó.

Lớp con sẽ thừa hưởng tất cả các thuộc tính và phương thức của lớp cha, và có thể định nghĩa thêm các thuộc tính và phương thức riêng cho mình.

Các ví dụ minh họa:

1. Kế thừa từ lớp cha Person.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def display_info(self):
        print(f"Name: {self.name}\nAge: {self.age}")

class Student(Person):
    def __init__(self, name, age, major):
        super().__init__(name, age)
        self.major = major

    def display_info(self):
        super().display_info()
        print(f"Major: {self.major}")

person1 = Person("Alice", 25)
person1.display_info()

student1 = Student("Bob", 20, "Computer Science")
student1.display_info()

2. Kế thừa từ lớp cha Animal.

class Animal:
    def __init__(self, name, species):
        self.name = name
        self.species = species

    def speak(self):
        pass

class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name, "Canine")
        self.breed = breed

    def speak(self):
        return "Woof"

class Cat(Animal):
    def __init__(self, name):
        super().__init__(name, "Feline")

    def speak(self):
        return "Meow"

dog1 = Dog("Fido", "Labrador")
cat1 = Cat("Fluffy")

print(dog1.name, dog1.species, dog1.breed, dog1.speak())
print(cat1.name, cat1.species, cat1.speak())

3. Kế thừa từ lớp cha Shape.

class Shape:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def area(self):
        pass

class Rectangle(Shape):
    def __init__(self, x, y, width, height):
        super().__init__(x, y)
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

class Circle(Shape):
    def __init__(self, x, y, radius):
        super().__init__(x, y)
        self.radius = radius

    def area(self):
        return 3.14 * self.radius ** 2

rect1 = Rectangle(0, 0, 10, 5)
circle1 = Circle(0, 0, 3)

print(rect1.area())
print(circle1.area())

4. Ví dụ về việc sử dụng inheritance để quản lý hệ thống.

Đây là một ví dụ về việc sử dụng inheritance để quản lý hệ thống người dùng trên Linux. Trong đó, chúng ta sẽ xây dựng một lớp cha User và các lớp con Admin và RegularUser, tương ứng với người dùng có quyền hạn đặc biệt và người dùng bình thường.

class User:
    def __init__(self, username, password, full_name, email):
        self.username = username
        self.password = password
        self.full_name = full_name
        self.email = email

    def login(self):
        # some code to verify user's credentials
        pass

    def logout(self):
        # some code to log out the user
        pass

    def get_username(self):
        return self.username

    def get_full_name(self):
        return self.full_name

    def get_email(self):
        return self.email

class Admin(User):
    def __init__(self, username, password, full_name, email, privileges):
        super().__init__(username, password, full_name, email)
        self.privileges = privileges

    def grant_privilege(self, privilege):
        self.privileges.append(privilege)

    def revoke_privilege(self, privilege):
        self.privileges.remove(privilege)

    def get_privileges(self):
        return self.privileges

class RegularUser(User):
    def __init__(self, username, password, full_name, email, group):
        super().__init__(username, password, full_name, email)
        self.group = group

    def join_group(self, group):
        self.group.append(group)

    def leave_group(self, group):
        self.group.remove(group)

    def get_group(self):
        return self.group

Trong ví dụ này, lớp User là lớp cha chung cho tất cả các loại người dùng trên hệ thống, bao gồm cả Admin và RegularUser. Lớp Admin kế thừa từ lớp User và thêm vào các thuộc tính và phương thức đặc biệt cho phép quản lý quyền hạn của người dùng. Tương tự, lớp RegularUser cũng kế thừa từ lớp User và có thêm các thuộc tính và phương thức để quản lý nhóm của người dùng.

Ví dụ này chỉ mang tính chất minh họa, tuy nhiên, trong thực tế, việc sử dụng inheritance trong Python để quản lý hệ thống có thể giúp quản lý và triển khai hệ thống hiệu quả hơn.