一 对象
oo:Object Oriented面向对象
对象的特性
- 封装 举例list中的append和sort方法,封装好之后直接调用
- 继承
- 多态 不同对象对同一行为的抽象,动物的跑为例
2.1 继承示例
>>> class MyList(list):
pass
>>> list2 = MyList()
>>> list2.append(2)
>>> list2.append(3)
>>> list2.append(5)
>>> list2
[2, 3, 5]
>>> list2.sort(reverse=True)
>>> list2
[5, 3, 2]
3.1 多态示例
>>> class Tortoise:
def run(self):
print('run slow')
>>> class Dog:
def run(self):
print('run quick')
>>> d = Dog()
>>> t = Tortoise()
>>> d.run
<bound method Dog.run of <__main__.Dog object at 0x000001BCF0DA3A88>>
>>> d.run()
run quick
>>> t.run()
run slow
类的示例
#python中的类名约定以大写字母开头
class Turtle:
#属性
color = 'green'
weight = 10
leg = 4
mouth = '小嘴'
#方法
def climb(self):
print('我正努力的想上爬...')
def run(self):
print('我正在飞快的向前跑...')
def bite(self):
print('咬死你咬死你')
if __name__ == '__main__':
tt = Turtle()
tt.climb()
tt.bite()
二 对象中的self
>>> class Ball:
def setName(self,name):
self.name = name
def kick(self):
print('我叫%s,该死的,谁踢我。。。' % self.name)
>>> a = Ball()
>>> a.setName('球A')
>>> a.kick()
我叫球A,该死的,谁踢我。。。
>>> b= Ball()
>>> b.setName('球B')
>>> b.kick()
我叫球B,该死的,谁踢我。。。
三 类的继承
3.1 写法
class DrivedClass(BasedClass)
BasedClass 为基类、超类或父类
继承示例如下:
>>> class Parent:
def call(self):
print('父类的call')
>>> class Child(Parent):
pass
>>> c = Child()
>>> c.call()
父类的call
3.2 多态
子类继承父类,重写同一个方法,使得父类、多个子类之间同一个方法,执行内容不一致。示例如下
>>> class Parent:
def call(self):
print('父类的call')
>>> class Child(Parent):
def call(self):
print('子类的call')
>>> c = Child()
>>> c.call()
子类的call
3.3 多重继承
写法:
class DrivedClass(BasedClass1,BasedClass2,BasedClass3)
>>> class Base1:
def run1(self):
print('Base1的run方法')
>>> class Base2:
def run2(self):
print('Base2的run方法')
>>> class Child(Base1,Base2):
pass
>>> c = Child()
>>> c.run1()
Base1的run方法
>>> c.run2()
Base2的run方法
四 类的组合
class Tortoise:
def __init__(self,x):
self.num = x
class Fish:
def __init__(self,x):
self.num = x
class Pool:
def __init__(self,x,y):
self.tortoise = Tortoise(x)
self.fish = Fish(y)
def print_num(self):
print('池中总共有乌龟%d只,鱼%d条' % (self.tortoise.num , self.fish.num))
#执行结果如下:
>>> p = Pool(1,10)
>>> p.print_num()
池中总共有乌龟1只,鱼10条