📜  Python中的面向对象编程 | Set 3(继承、对象实例、issubclass 和 super)(1)

📅  最后修改于: 2023-12-03 15:34:27.394000             🧑  作者: Mango

Python中的面向对象编程 | Set 3(继承、对象实例、issubclass 和 super)

面向对象编程(Object Oriented Programming,OOP)是一种编程范式,它将现实世界中的实体和其属性,抽象成类和对象的概念,方便程序员进行编程。Python作为一种支持面向对象编程的语言,包括以下特性:继承、封装、多态。

在本篇文章中,我们将探讨继承、对象实例、issubclass 和 super等内容。

继承

继承是面向对象编程的一个重要概念,通过继承,一个类可以继承另一个类(称之为父类或者基类)的属性和方法。继承的语法如下:

class ChildClass(ParentClass):
    pass

ChildClass继承了ParentClass。

让我们来看一个例子:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def getInfo(self):
        print(f"My name is {self.name}. I am {self.age} years old.")

class Student(Person):
    def __init__(self, name, age, grade):
        super().__init__(name, age)
        self.grade = grade
    
    def getGrade(self):
        print(f"My grade is {self.grade}.")

s = Student("Tom", 18, "A")
s.getInfo()
s.getGrade()

子类Student继承了父类Person,Student可以使用Person的属性和方法。使用super()函数调用父类的构造器。

对象实例

在面向对象编程中,类是一个抽象的概念,而对象是实际存在的个体。定义类后,我们需要通过实例化的方式创建一个对象。实例化的语法如下:

class MyClass:
    pass

obj = MyClass()

让我们看一个更加详细的例子:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def getInfo(self):
        print(f"My name is {self.name}. I am {self.age} years old.")

p1 = Person("Tom", 18)
p2 = Person("John", 20)
p1.getInfo()
p2.getInfo()

在该例子中,我们定义了一个Person类,然后通过实例化创建了p1和p2两个对象。

issubclass

issubclass()函数用于判断一个类是否是另一个类的子类,它的语法格式为:

issubclass(sub_class, parent_class_or_tuple)

返回值为True或False。

让我们看一个例子:

class Person:
    pass

class Student(Person):
    pass

print(issubclass(Student, Person))  # True
print(issubclass(int, Person))  # False

在该例子中,Person是Student的父类,issubclass()函数返回值为True,而int不是Person类的子类,返回值为False。

super

super()函数用于调用父类的方法,可以在子类中,直接调用父类方法,语法格式如下:

super().method()

让我们看一个例子:

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

s = Student("Tom", 18, "A")
print(s.name)

在该例子中,子类Student调用父类Person中的__init__()方法,使用super()函数,实现对父类方法的调用。

结论

继承、对象实例、issubclass 和 super是面向对象编程中的重要概念,Python中也提供了相应的语法和函数来支持这些概念的实现。掌握这些概念,对于大型程序的编写是至关重要的。