面向对象编程
概念:把整个世界看成各种不同类,一个程序里面会有一些类
和面向过程的区别:
面向对象适合开发中大型项目,开发效率更高,更接近人的思维
面向过程适合中小型项目,效率相对低
类
:具有某种特征的事务的集合(群体,比如人是会说话,会思考的一个集合)
对象
:群体(类)里面的个体
类是抽象的,对象是具体的
通过python创造一个类,或者对象
class cl1: #声明一个cl1的类
pass #占位语句
a=cl1() #实例化一个类,现在a成为了对象
构造函数
#self:在类中构造的方法必须加上self参数
#__init__(self,参数)
class cl2:
def __init__(self):
print("i am cl2 self")
b=cl2()
输出:
i am cl2 self
方法
类里面的函数 def 方法名(self,参数)
class cl3:
def myfunc1(self,name):
print("hello"+name)
c = cl3()
c.myfunc1("zz")
输出
hellozz
#给一个构造函数
class cl4:
def __init__(self,name):
self.myname=name
def myfunc1(self):
print("hello"+self.myname)
c = cl4("zz")
c.myfunc1()
输出
hellozz
继承
- 父类
class father():
def speak(self):
print("i can speak")
- 单继承:父类只有一个
class father():
def speak(self):
print("i can speak")
#儿子只继承了父亲
class son(father):
pass
s=son()
s.speak()
输出:
i can speak
- 多继承:父类有多个
class father():
def speak(self):
print("i can speak")
class mother():
def write(self):
print("i can write!")
#儿子只继承了父亲
class son(father):
pass
#女儿继承了父母,并且还会听东西
class daughter(father,mother):
def listen(self):
print("i can listen!")
d=daughter()
d.speak()
d.write()
d.listen()
输出:
i can speak
i can write!
i can listen!
- 重写/重载
class father():
def speak(self):
print("i can speak")
class mother():
def write(self):
print("i can write!")
#儿子只继承了父亲
class son(father):
pass
#女儿继承了父母,并且还会听东西
class daughter(father,mother):
def listen(self):
print("i can listen!")
#小儿子重载,继承了父亲并且有了优化
class son2(father):
def speak(self):
print("i can speak 2 ")
s2=son2()
s2.speak()
输出
i can speak 2