Python面向对象
Python是一种面向对象的编程语言,因此它支持面向对象编程(OOP)。面向对象编程是一种程序设计方法,它将数据和行为打包成对象。对象是类的实例,而类是具有相似属性和行为的一组对象的抽象。在Python中,我们可以使用类来创建对象,并且可以定义它们的属性和方法。
什么是面向对象
- 面向对象的官方解释
“把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。”
- 知乎上比较有趣的解释
一句话说明什么是面向对象?你个士鳖,你们全家都是士鳖!
好像有人说过这样的话,当头棒喝的方式虽然情感上不易接受,但记忆效果十分显著。
好吧,如果你觉得“土鳖”实在难听也不能准确定位你的档次,你可以自行将其替换为“土豪”,
whatever.
面向对象思想有三大要素:封装、继承和多态。
- 封装:不管你是土鳖还是士豪,不管你中午吃的是窝头还是鲍鱼,你的下水都在你肚皮里,别人看不到你中午吃了啥,除非你自己说给他们听 (或者画给他们看,whatever);
- 继承:刚说了,你个士鳖/豪,你们全家都是士鳖/豪。冰冻三尺非一日之寒,你有今天,必定可以从你爸爸爷爷那里追根溯源。正所谓虎父无犬子,正恩同学那么狠,他爹正日就不是什么善茬,更甭说他爷爷日成,明白了吗?
- 多态:哲学家说过,世上不会有两个一模一样的双胞胎。即使你从你父亲那里继承来的士鳖l豪气质,也不可能完全是从一个模子里刻出来的,总会有些差别。比如你爸喜欢蹲在门前吃面,你喜欢骑在村口的歪脖子树上吃,或者反过来。当然,也可能令尊爱吃龙虾鲍鱼时旁边有几个艺校小女生喝酒唱歌助兴,你可能更喜欢弄个街舞乐队来吹拉弹唱。
- 总结:面向对象编程的三大核心:封装、继承、多态
Python中面向对象中的重要概念
- 类(Class):类是一个模板或蓝图,它定义了一组属性和方法,用于创建对象。类是面向对象编程的核心概念之一,它描述了对象应该具有的特征和行为。
- 对象(Object):对象是类的实例,它是具有特定属性和方法的实体。每个对象都有其自己的数据和行为。
- 属性(Attribute):属性是对象的数据成员,它们是类定义中声明的变量。属性用于存储和描述对象的状态。
- 方法(Method):方法是对象的函数成员,它们是类定义中声明的函数。方法用于执行操作并更改对象的状态。
- 继承(Inheritance):继承是一种面向对象编程的概念,它允许开发人员创建一个新类,该类继承了现有类的属性和方法。继承允许子类重用父类的代码,从而减少了代码的重复性。
- 多态(Polymorphism):多态是一种面向对象编程的概念,它允许开发人员使用相同的接口来处理不同类型的对象。多态使代码更加灵活和可扩展。
- 封装(Encapsulation):封装是一种面向对象编程的概念,它允许开发人员隐藏对象的内部实现细节。封装通过将对象的状态和行为隐藏在类中,以使其对外部不可见,从而提高了代码的可维护性和安全性。
Python中面向对象的基本实现
类与对象
类是一种自定义数据类型,它可以包含属性和方法。对象是类的一个实例,通过实例化类来创建。在Python中,可以使用class关键字定义一个类。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print(f"Hello, my name is {
self.name} and I am {
self.age} years old.")
在这个示例中,我们定义了一个Person类,它有两个属性:name和age,以及一个方法sayhello()
,__init()__
是一个特殊的方法,它在创建对象时自动调用。
继承
继承是指一个类可以从另一个类中继承属性和方法。Python中的所有类都继承自一个基类object。可以使用super()函数调用父类的方法。
class Student(Person):
def __init__(self, name, age, major):
super().__init__(name, age)
self.major = major
def say_hello(self):
super().say_hello()
print(f"I am studying {
self.major}.")
在这个示例中,我们定义了一个Student类,它继承自Person类。除了name和age属性外,它还有一个major属性,并且重写了say_hello()
方法。
多态
多态是指相同的方法可以在不同的类中有不同的实现。Python中的多态是基于动态类型的,这意味着可以在运行时决定要调用哪个方法。
def introduce(person