11.1 给大家介绍对象
封装的概念:列表封装数据-----函数封装语句-----对象封装数据和代码描述对象:特征+行为11.2 对象=属性+方法
将人写出代码,如下:class Ren:#属性 color="黄色" legs=2 weight=100#方法 def pa(self): print("你看,我爬起来了") def 走(self): print("你看,我走起来了") def pao(self): print("你看,我跑起来了") def chi(self): print("你看,我开吃了") def shui(self): print("你看,我已经睡下了")#---以上只是定义好了模子(类),还没开始量产。必须将类实例化,才能引用实例 ---- tw=Ren()#---已经通过类创建了对象,下面进行对象的操作print(tw.color)print(tw.pao()) 封装=信息隐蔽技术 属性-变量 方法-函数==================列表排序====================代码如下list1=[2,1,4,9,5]list1.sort()print(list1)-------------[1,2,4,5,9]#如果想要列表末尾加个10list1.append(10)----------------------[1,2,4,5,9,10]======================== 列表即对象,提供了若干方法,方法的实现方法不知道=封装。面向对象的特征=封装+继承+多态11.3面向对象编程
11.3.1 self是什么 类是建设图纸,对象是房子,self就是门牌号。通过例子来感受:class Ball: def setName(self,name): self.name=name def kick(self): print("我叫%s,嗷~谁踢我?!"%self.name)a=Ball()a.setName("捣蛋头")b=Ball()b.setName("飞机头") c=Ball()c.setName("火箭头")print(a.kick())print(b.kick())print(c.kick())-----------------------------------------------------我叫捣蛋头,嗷~谁踢我?!None我叫飞机头,嗷~谁踢我?!None我叫火箭头,嗷~谁踢我?!None========================小结==================================将代码的print() 去掉即可 改成 return 是因为python函数使用return返回值,如果不用return, 而用print输出值,这个函数默认还有一个返回值为None =================================================================11.3.2 你听说过Python的魔法方法么?构造函数__init__()作用:在由类创建对象的时候,自动调用该方法,对对象进行初始化设置。class Ball: def __init__(self,name): self.name=name def kick(self): return ("我是%s,来打我啊"% self.name)b=Ball("tan")
print(b.kick())----------------------------我是tan,来打我啊============还可以进行初始设置,没传入也不报错 __init__(self,name="A"):11.3.3 公有和私有 Python里没有关键字进行修饰
class Person: name="捣蛋头"p=Person()print(p.name)--------------捣蛋头===================Python机制name mangling,变私有只需要加“__”两个下划线class Person: __name="捣蛋头"p=Person()print(p.name)-------------报错AttributeError: 'Person' object has no attribute 'name'那如何才能访问呢?class Person: __name = "捣蛋头" def getNanme(self): return self.__namep=Person()print(p.getNanme())====================================本质上,只是改了变量名。代码如下class Person: __name="捣蛋头"p=Person()print(p._Person__name)---------------------捣蛋头=====================================Python的私有机制其实是伪私有。11.4 继承
鱼类,假如进行细分,有很多种类,能不能不用每次都去重新定义鱼类呢?大部分鱼的属性和方法都是相似的,如果有一种机制可以使得相似的东西自动传递,快捷多了。继承 可以实现。语法很简单:class 类名(被继承的类): ...被继承的类称为基类,父类或者超类;继承者称为子类,子类可以继承父类任何属性、方法举例如下:class Zuzong: def hello(self): print("正在调用父类方法。。。")class Haizi(Zuzong): passp=Zuzong()p.hello() #父类实例对象调用方法s=Haizi()s.hello() #子类实例对象调用 继承父类的 方法---------------------正在调用父类方法。。。正在调用父类方法。。。====================================================如果子类定义与父类同名的方法或者属性,则会自动【覆盖】父类对应的方法或属性。class Fulei: def hello(self): print("say hello!")class Zilei(Fulei):
def hello(self): print("八嘎亚路")z=Zilei()
z.hello()-----------------八嘎亚路