Lớp cơ sở trừu tượng

Lập trình Hướng đối tượng Nâng cao với Python

Jake Roach

Data Engineer

Lớp cơ sở trừu tượng

Lớp cơ sở trừu tượng tạo một bản thiết kế cho lớp bằng cách định nghĩa các phương thức trừu tượng buộc mọi lớp con phải cài đặt

  • Đảm bảo hành vi chung cho một nhóm lớp
  • Bộ trang trí @abstractmethod
  • Dùng để kế thừa, không để khởi tạo
  • Không phải mọi phương thức trong lớp trừu tượng đều phải trừu tượng (có thể có phương thức cụ thể)
class School:
    # Do things such as enroll 
    # and add a course
class MiddleSchool:
    # Play an instrument, join a club
    # but must enroll and add courses
class HighSchool:
    # Play a varsity sport, apply
    # for college, but must enroll 
    # and add courses
Lập trình Hướng đối tượng Nâng cao với Python

Tạo lớp cơ sở trừu tượng

from abc import ABC, abstractmethod

# Create an abstract base class that inherits # from ABC class School(ABC): @abstractmethod def enroll(self): # This method must be implemented # in classes that inherit from it pass
# Concrete methods are inherited def graduate(self): print("Congrats on graduating!")
  • Kế thừa từ lớp ABC trong mô-đun abc
  • pass
  • Mọi lớp kế thừa School phải cài đặt phương thức enroll()
  • Cũng có thể có phương thức cụ thể (concrete)
Lập trình Hướng đối tượng Nâng cao với Python

Cài đặt lớp cơ sở trừu tượng

class HighSchool(School):
    def enroll(self):
        print("Welcome to high school!")

# Create an instance of HighSchool
high_school = HighSchool()
high_school.enroll()
Welcome to high school!
high_school.graduate()
Congrats on graduating!
  • HighSchool phải định nghĩa phương thức enroll()
  • Gây TypeError nếu thiếu enroll()
  • HighSchool kế thừa phương thức graduate()
Lập trình Hướng đối tượng Nâng cao với Python

Nhiều phương thức trừu tượng

class School(ABC):
    @abstractmethod
    def enroll(self):
        pass

    @abstractmethod
    def add_course(self, course_name):
        pass

    def graduate(self):
        print("Congrats on graduating!")

  • Hai phương thức trừu tượng: enroll()add_course()
class HighSchool(School):
    def __init__(self):
        self.courses = []

    # Implementing abstract method
    def enroll(self):
        print("Welcome to high school!")

    # Implementing abstract method
    def add_course(self, course_name):
        self.courses.append(course_name)
        print(f"You enrolled in {course_name}")

Lập trình Hướng đối tượng Nâng cao với Python

Ayo berlatih!

Lập trình Hướng đối tượng Nâng cao với Python

Preparing Video For Download...