1.继承介绍以及单继承。
将共性的内容放在父类中,子类只需要关注自己特有的内容python中所有的内容都是对象,所有的对象都直接或间接继承了object。
2.继承示例
# 定义一个父类,如下:
class Cat(object):
def __init__(self, name, color="白色"):
self.name = name
self.color = color
def run(self):
print("%s--在跑"%self.name)
# 定义一个子类,继承Cat类如下:
class Bosi(Cat):
def setNewName(self, newName):
self.name = newName
def eat(self):
print("%s--在吃"%self.name)
bs = Bosi("印度猫")
print('bs的名字为:%s'%bs.name)
print('bs的颜色为:%s'%bs.color)
bs.eat()
bs.setNewName('波斯')
bs.run()
运行结果是:
说明:
虽然子类没有定义__init__方法,但是父类有,所以在子类继承父类的时候这个方法就被继承了,所以只要创建Bosi的对象,就默认执行了那个继承过来的__init__方法
总结
子类在继承的时候,在定义类时,小括号()中为父类的名字
父类的属性、方法,会被继承给子类。
私有的属性,不能通过对象直接访问,但是可以通过方法访问
私有的方法,不能通过对象直接访问
私有的属性、方法,不会被子类继承,也不能被访问
一般情况下,私有的属性、方法都是不对外公布的,往往用来做内部的事情,起到安全的作用
3.多继承
class Horse:
def __init__(self,strong):
self.strong=strong
def run(self):
print('跑得快')
class Donkey:
def __init__(self,ear):
self.ear=ear
def pull(self):
print('拉磨')
class Mule(Horse,Donkey):
pass
mule=Mule(True)
print(mule.strong)
mule.run()
mule.pull()
运行结果是:
True
跑得快
拉磨
4.重写父类方法
所谓重写,就是子类中,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法。
class Father:
def __init__(self,money):
self.money=money
def f1(self):
print('Father.....f1')
class Son(Father):
def __init__(self,name,age,money):
self.name=name
self.age=age
Father.__init__(self,money)
def f1(self):
print('Son......f1')
Father.f1(self)
def __str__(self):
return '%s,%s,%s'%(self.money,self.name,self.age)
son=Son('小王',23,4234234)
son.f1()
print(son)
运行结果是:
Son......f1
Father.....f1
4234234,小王,23
5.多态
什么是封装?
类是一种封装,将属性和方法封装。
函数也是一种封装,将具有一定共的逻辑代码封装到一个函数中,使用的时候调用即可
提高代码的扩展性。
什么是继承?
将公共的(共性的)属性和方法放在父类中,子类只关注自己特有的属性和方法。
提高代码的扩展性。
什么是多态?
一个对象在不同的情况下,具有不同的形态,用于强类型语言。是使用在继承和接口中实现。
Python中有两种说法:
1、python支持多态,python是一个弱类型,本身一个变量名,可以存储任何类型的值,可以理解为多种形态
2、python不支持多态,多态本身是用于强类型语言的,python是一个弱类型,所以不支持多态
6.类属性、实例属性.
直接在类中定义的,与方法平齐,不在方法里的属性就是 类属性
在方法里通过self.属性 都是实例属性
class Dog:
def __init__(self,name,color):
self.name=name
self.color=color
#创建一个实例对象
d1=Dog('旺财','黑色')
print(d1.name)
print(d1.color)
#实例属性
d1.num=10
print(d1.num)
d2=Dog('小白','白色')
print(d2.name)
运行结果是:
旺财
黑色
10
小白
class Person:
sun=1
p1=Person()
p2=Person()
print(p1.sun)
print(p2.sun)
print(Person.sun)
print('******************************************')
Person.sun=0
print(p1.sun)
print(p2.sun)
print('*************************************')
p1.sun=1111
print(p1.sun)
print(p2.sun)
print(Person.sun)
运行结果是:
1
1
1
******************************************
0
0
*************************************
1111
0
0
7.