封装:
1.对象的行为对外部世界是不可见的。
2.客户端不能直接操作来改变对象的内部状态。相反,客户端需要发送消息(这里理解的是调用成员方法)来请求对象改变其内部状态。
3.Python中,封装的概念不是隐式的,因为没有特定的保护等级(private\protected\public),不过Python可以使用__前缀就可以把其访问性变为私有。
多态:
1.多态有两种类型:
a.对象根据输入参数提供方法的不同实现
b.不同类型的对象可以使用相同的接口
2.例如Python里面的+号既可以实现整数相加,也可以使用字符串和列表的拼接。
a='John'
b=(1,2,3)
c=[1,2,3]
print(a[1],b[1],c[1])
o 2 2
继承:
1.继承一个类可以继承父类的大部分功能。
2.继承可以重用基类,也可以对原始类进行功能扩展
3.继承可以利用不同类的对象之间的关系建立层次结构,Python支持继承多个基类。
class A:
def a1(self):
print('123')
class B(A):
def b(self):
print('B')
b = B()
b.a1()
123
抽象:
1.提供了一个客户端接口,客户端可以通过该接口于类的对象(例如类变量,成员变量)进行交互,并可以调用该接口中定义的各个方法。
2.将内部类抽象成一个接口,这样客户端就不需要知道其具体的实现了。
class Adder:
def __init__(self):
self.num = 0
def add(self):
self.num+=1
acc = Adder()
for i in range(99):
acc.add()
print(acc.num)
99
组合:
1.将对象或者类组合成更加复杂的数据结构和软件实现方法
2.在组合中,一个对象调用其他对象的成员函数,这样无需通过继承便可以基本概念的跨模块调用。
class Adder:
def a1(self):
print('this is a!')
class B:
def b1(self):
Adder().a1()
b = B()
b.b1()
this is a!