面向对象编程------Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。
一.对象(Object)
一个对象具有两个特征:
-
属性
-
方法
我们可以举个例子,比如人:
-
属性:肤色、体重、发型等
-
方法:打游戏、跑步、游泳等
总之一句话总结就是:属性=对象有什么,方法=对象会什么。
关于对象的代码实例,接下来在介绍类的时候一并说明。
二.类(class)
1.创建类和对象
语法:
python
class 类名:
属性
方法
说明:
类是抽象的模板,在Python中,定义类是通过class关键字
实例:
python
class person:
name = "小红" ##name属性
age = 20 ##age属性
def sport(self): ###sport方法
print('运动真开心')
w = person() ###创建类的对象
这边我们创建了一个类,并给这个类添加了属性及方法,然后我们还创建了一个类的对象并赋给了变量W,接下来我们来试下调用我们的属性及方法。
执行对象的方法:
python
w.sport()
输出:
执行对象的属性:
python
w.name
输出:
2.self是什么?
(1)self即代表着实例(对象)本身
(2)名字不一定必须叫self,可以叫she或者he,但是按照约定我们还是使用self
3.类的初始化:
我们可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__(两个下划线)方法来实现, 这个方法不需要被调用,只要创建对象就会自动执行。
实例:
python
class person:
def __init__(self):
self.name = "小红" ##name属性
self.age = 20 ##age属性
print('程序开始执行啦')
def sport(self): ###sport方法
print('运动真开心')
w = person() ###创建类的对象
输出:
三.类的三大特性
三大特性:封装、继承、多态
1.封装
在Python中使用OOP,我们可以限制对方法和变量的访问。这样可以防止数据直接修改(称为封装),在Python中,我们使用下划线作为前缀来表示私有属性,即单" _"或双" __"
python
class person:
def __init__(self):
self.__age = 20
def change(self):
print(self.__age)
w = person()
w.change()
w.__age
输出:
这边显示已经无法从外部访问,这样就确保了外部代码不能随意修改对象内部的状态。
2.继承
继承是一种创建新类的方法,用于在不修改现有类的细节的情况下使用它。
我们直接通过实例来了解下:
python
class A: ##父类
def __init__(self):
print("自动执行")
def a(self):
print("执行程序A")
class B(A): ##子类
def b(self):
print('执行程序B')
B_A = B()
B_A.a() ##调用父类的方法
B_A.b() ##调用子类的方法
输出:
通过上面的实例,我们可以看出,子类继承了父类的功能,调用子类的属性及方法。
3.多态性
多态性是一种功能(在OOP中),可以将公共接口用于多种形式(数据类型)。
直接看实例:
python
class A:
def a(self):
print("执行程序A")
class B:
def a(self):
print('执行程序B')
class C:
def a(self):
print('执行程序C')
def select(aa):
aa.a()
select(A())
select(B())
select(C())
输出:
在上面的程序,我这边定义了A、B、C三个类,它们每个都有通用的a()方法,但是,它们的功能不同,为了允许多态,我们创建了通用接口,即select()可以接受任何对象的函数,然后传递对象即可运行。
四.总结
面向对象编程让编程变得简单而有效,让编程人员的生产力提高。喜欢的朋友后续可以再来看看其他的进阶内容,谢谢。