### Python面向对象之继承和多态用法分析 #### Python 类的继承 在面向对象编程(Object Oriented Programming, OOP)中,继承是一种强大的机制,它允许创建一个新的类(子类),该类会继承现有类(基类或父类)的所有属性和方法。通过继承,我们可以重用代码并构建出更为复杂和灵活的类结构。 **定义基类 Person** 我们定义一个基类`Person`,用于表示一个人,并为其添加属性变量`name`和`sex`(姓名和性别)以及一个方法`print_title()`。这个方法根据性别的不同打印不同的称谓。 ```python class Person(object): def __init__(self, name, sex): self.name = name self.sex = sex def print_title(self): if self.sex == "male": print("man") elif self.sex == "female": print("woman") ``` **定义子类 Child** 接下来,我们定义一个子类`Child`,继承自`Person`。这里使用`class Child(Person):`语法表示`Child`类继承自`Person`类。 ```python class Child(Person): pass ``` 这里`pass`关键字表示子类没有额外的方法或属性需要定义。这意味着`Child`类将直接继承`Person`类的所有属性和方法,包括`print_title()`方法。 **子类实例化** 现在我们可以创建`Child`类的实例,并调用继承的方法。 ```python May = Child("May", "female") Peter = Person("Peter", "male") print(May.name, May.sex, Peter.name, Peter.sex) May.print_title() Peter.print_title() ``` 这段代码展示了如何创建`Child`类的实例`May`以及`Person`类的实例`Peter`。可以看到,子类`Child`继承了父类`Person`的所有属性和方法。因此,我们可以通过`May.print_title()`直接调用父类中的`print_title()`方法。 #### Python 类的多态 多态是指一个接口可以有多种实现方式。在面向对象编程中,多态通常意味着同一接口可以有不同的行为表现。在Python中,我们可以通过重写父类的方法来实现多态。 **重写方法** 在上面的例子中,我们可以在`Child`类中重写`print_title()`方法,以改变其行为。 ```python class Child(Person): def print_title(self): if self.sex == "male": print("boy") elif self.sex == "female": print("girl") ``` 现在,如果我们再次创建`Child`类的实例并调用`print_title()`方法,将会输出不同的结果: ```python May = Child("May", "female") May.print_title() # 输出: girl ``` 这里,虽然`print_title()`方法的名称相同,但子类中的实现却与父类不同。这就是多态的一个简单例子。 #### 使用 isinstance() 和 issubclass() 在Python中,我们经常需要判断一个对象是否属于特定的类或者一个类是否是另一个类的子类。这可以通过`isinstance()`和`issubclass()`函数来实现。 **isinstance() 示例** `isinstance()`用于检查一个对象是否是特定类的实例。例如: ```python class Person(object): pass class Child(Person): pass May = Child() print(isinstance(May, Child)) # True print(isinstance(May, Person)) # True ``` 这里,`May`是`Child`类的实例,同时由于继承的关系,它也是`Person`类的实例。 **issubclass() 示例** `issubclass()`用于检查一个类是否是另一个类的子类。 ```python print(issubclass(Child, Person)) # True ``` 这表明`Child`类确实是`Person`类的子类。 #### 总结 本篇文章通过具体的实例详细介绍了Python中面向对象编程的两个核心概念——继承和多态。通过继承,子类可以继承父类的所有属性和方法;通过多态,子类可以重写父类的方法,实现不同的行为。此外,还介绍了如何使用`isinstance()`和`issubclass()`来检查实例类型和类继承关系。这些概念和方法对于理解和使用面向对象编程非常关键。
- 粉丝: 3
- 资源: 965
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助