python中子类与父类的关系基础知识点

1. 父类与子类的定义

在Python中,我们可以使用类来定义对象的属性和方法。父类也被称为基类或超类,子类继承了父类的属性和方法,并可以在子类中添加新的属性和方法。

下面是一个简单的示例,展示了如何定义一个父类和一个子类:

父类

class Animal:

def __init__(self, name):

self.name = name

def speak(self):

print("I am an animal.")

子类

class Dog(Animal):

def __init__(self, name, breed):

super().__init__(name)

self.breed = breed

def speak(self):

super().speak()

print("I am a dog.")

在上面的示例中,Animal是一个父类,它有一个属性name和一个方法speak。Dog是Animal的子类,它继承了Animal的属性和方法,并添加了一个新的属性breed和一个新的方法speak。

2. 子类的继承

子类可以继承父类的属性和方法,并且还可以修改或扩展这些属性和方法。

在上面的示例中,Dog继承了Animal的属性name和方法speak,同时还添加了一个新的属性breed和一个新的方法speak。

我们可以创建一个Dog对象并调用它的属性和方法:

dog = Dog("Tommy", "Golden Retriever")

print(dog.name) # 输出: Tommy

print(dog.breed) # 输出: Golden Retriever

dog.speak() # 输出: I am an animal. I am a dog.

在上面的示例中,我们创建了一个名为dog的Dog对象,它继承了Animal的name属性和speak方法。我们还添加了一个breed属性和一个speak方法。

注意,在子类的方法中,我们可以使用super()函数调用父类的方法。在我们的示例中,子类的speak方法首先调用父类的speak方法,然后再输出自己的内容。

3. 子类的重写

在子类中,我们可以重新定义父类的方法,这被称为方法重写。子类重写的方法会覆盖父类的方法。

在上面的示例中,Dog类重写了Animal类的speak方法。当我们调用Dog对象的speak方法时,它会输出子类的内容而不是父类的内容。

4. isinstance()函数

在Python中,我们可以使用isinstance()函数来检查一个对象是否是一个类的实例,或者是该类的子类的实例。

下面是一个示例:

animal = Animal("Animal")

dog = Dog("Tommy", "Golden Retriever")

print(isinstance(animal, Animal)) # 输出: True

print(isinstance(dog, Animal)) # 输出: True

print(isinstance(animal, Dog)) # 输出: False

print(isinstance(dog, Dog)) # 输出: True

在上面的示例中,我们创建了一个Animal对象和一个Dog对象,然后使用isinstance()函数检查它们的类型。我们发现Animal对象是Animal类的实例,但不是Dog类的实例;而Dog对象既是Animal类的实例,也是Dog类的实例。

5. super()函数

在子类中,我们可以使用super()函数来调用父类的方法。

在上面的示例中,Dog类的speak方法调用了父类Animal的speak方法。使用super()函数可以在子类中直接调用父类的方法,而不需要指定父类的名称。

需要注意的是,在Python 3中,我们可以使用super()函数简化父类调用的方法,而在Python 2中,我们需要指定父类的名称来调用父类的方法。

总结

在Python中,子类继承了父类的属性和方法,并且可以添加新的属性和方法。子类可以重写父类的方法,并通过super()函数调用父类的方法。我们可以使用isinstance()函数检查一个对象的类型,以及使用super()函数调用父类的方法。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签