python面向对象学习总结
面向对象应用
class car:
"""一个简单的类实例"""
mg = 1000
def car1(self): #这个函数中必须要传参数,最少是个self
return '我跑,我跑,我加速跑'
class bus:
"""一个简单的类实例"""
mg = 10000
def bus1(self): #这个函数中必须要传参数,最少是个self
return '我拉,我拉,我再拉'
x = car()
y= bus()
# 访问类的属性和方法
print("小汽车的质量为:%dKG"% x.mg) #调用类中的参数
print("小汽车的特征:", x.car1()) #调用类中的方法
print("客车的质量为:%dKG"% y.mg) #调用类中的参数
print("客车的特征:", y.bus1()) #调用类中的方法
先定义相应的类,然后再从类中初始化对象,对象能够调用类中的属性和方法,方便了程序的编写。例题可以看出,当你有很多小汽车时,就会更加方便进行信息的输出。
继承的使用
算是对类之间的代码简化,有相似特征,包含关系之间的类,通过相互调用,能够简化代码量。一般都是大类包含小类,如哺乳动物是大类,人是小类。
class PassergerCar:
# 定义基本属性
name = ''
lu = 0
# 定义私有属性,私有属性在类外部无法直接进行访问
__weight = 0
# 定义构造方法
def __init__(self, n, a, w):
self.name = n
self.lu = a
self.__weight = w
def speak(self):
print("%s 说:我是%d号车。我的体重为%dKG" % (self.name, self.lu,self.__weight))
# 单继承示例
class bus(PassergerCar):
mg = 10000
def __init__(self, n, a, w, g):
# 调用父类的构函数
PassergerCar.__init__(self, n, a, w)
self.mg = g
# 覆写父类的方法
def speak(self):
print("%s说:我是东风路%d路公交车,我的重量为%dKG" % (self.name, self.lu, self.mg))
k = bus('东风路公交车',10,11,10000)
k.speak()
s= PassergerCar("客车",10,1100)
s.speak()
该例子,不是特别好的集成,这个大类并不是包含小类,仅仅是有相似特征进行的继承。继承中,小类一般可以有自己的独特属性方法。
多继承
一个字类可以继承多个父类,继承多个父类的方法和属性,当父类中有重名的方法是,以第一个方法为最终调用的方法。
class Father(object):
def __init__(self,money):
self.money = money
def run(self):
print("run")
def eat(self):
print("eat1")
class Mother(object):
def __init__(self,face):
self.face = face
def play(self):
print("play")
def eat(self):
print("eat2")
class Child(Father,Mother):
def __init__(self,money,face):
Father.__init__(self,money)
Mother.__init__(self,face)
a = Child(10000,200)
print("我继承了多少%dmoney,我继承了的%d颜值"% (a.money,a.face))
a.play()
a.run()
a.eat()
多态是针对对象的,只需将制定对象传入,就可以给对对象进行制定操作。
class Animal(object):
def __init__(self,name):
self.name = name
def eat(self):#吃的方法
print(self.name+" eat")
class Cat(Animal):#继承父类
def __init__(self,name):
super(Cat,self).__init__(name)
class Dog(Animal):#继承父类
def __init__(self,name):
super(Dog,self).__init__(name)
class Person(object):#定义人的类,人去投喂狗和猫
def feedAnimal(self,ani):
print("给你食物")
ani.eat()
c = Cat('tom')
d = Dog('xiaohei')
c.eat()
d.eat()
person = Person()#初始化,形成对象
person.feedAnimal(c)#调用对象,应用多态操作。
person.feedAnimal(d)
多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。
类的属性
class Person(object):
name = "qin"#类中的属性
def __init__(self,name):#对象的属性
self.name = name
print(Person.name)#类属性的输出
per = Person('li')
print(per.name)#对象属性的输出
print(Person.name)
对象属性的优先级是比类属性的优先级要高的,当对象中没有属性方法时,才会默认调用类中的方法