
python之类一、类的介绍1、类(class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例理解一个类中可以包含多个函数2、实例化创建一个类的实例类的具体对象。 比如zm183、实例变量在类的声明中属性是用变量来表示的这种变量就称为实例变量实例变量就是一个用 self 修饰的变量。如self.namenameself.ageage4、类变量类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。如class Lei(object):name185、方法类中定义的函数。如def hs(self):6、对象通过类定义的数据结构实例。对象包括两个数据成员类变量和实例变量和方法7、继承将一个类的方法可以被另一个类引用8、方法重写如果从父类继承的方法不能满足子类的需求可以对其进行改写这个过程叫方法的覆盖override也称为方法的重写。二、类的定义1、定义类class# 三种类定义格式class 类名(object): #新式类 目前用的新式类passclass 类名(): ##经典类2passclass类名: #经典类1pass三、类的结构格式class 类名(object):类变量值def __init__(self,变量名1,变量名2): #init构造函数对类进行初始化操作self.变量名1变量名1 #实例变量1#self 开头就是类的实例self.变量名2变量名2 #实例变量2def 方法1 (self):打印内容1def 方法2(self):打印内容2def 方法3(self):打印内容3if __name__ __main__:类的对象名类名(实例1,实例2)类的对象.方法1类的对象.方法2类的对象.方法3案例class Ren(object): #class定义一个类名namezs #类变量def __init__(self,name,age): #构造函数self.namename #实例变量self.ageage #实例变量def tou(self): #方法1 类中函数print(头)def shou(self): ##方法1print(手)def jiao(self): ##方法1print(脚)def xm(self):print(self.name)if __name__ __main__:dxRen(ZM,18) #创建类的对象dx, zm,18 实例dx.jiao() #通过类的对象调用方法dx.shou()dx.tou()dx.xm()print(dx.name) # 通过类对象调用实例变量nameprint(dx.age)print(Ren.name) #通过类名调类变量四、类中的实例方法、动态方法、静态方法1类的实例方法案例class Lei(object):name18def __init__(self,name,age):self.namenameself.ageagedef hs(self):print(self.name)def hs2(self):print(self.age)def hs3(self):print(self.name,排名第一,self.age,年龄)if __name__ __main__:dxLei(zs,18)dx.hs()dx.hs2()dx.hs3()2类方法也叫动态方法 classmethod #定义类方法cls 定义class Lei(object):name18age20def __init__(self,name,age):self.namenameself.ageagedef hs(self):print(self.age)classmethod #定义类方法def hs2(cls):#cls 方法名print(cls.age) #打印也是cls开头def hs3(self):print(self.name,排名第一,self.age,年龄)if __name__ __main__:dxLei(zs,18)dx.hs()dx.hs2()3静态方法 也叫私有方法 staticmethodclass Lei(object):name18age20def __init__(self,name,age):self.namenameself.ageagedef hs(self):print(self.age)classmethod #定义类方法def hs2(cls):#cls 方法名print(cls.age) #打印也是cls开头def hs3(self):print(self.name,排名第一,self.age,年龄)staticmethoddef dy(name):print(name)if __name__ __main__:dxLei(zs,18)dx.hs()dx.hs2()dx.dy(ww)实例方法self 动态方法cls 静态方法空五、python三大封装、继承、多态一、封装1、封装封装就是隐藏对象一些不希望外部所访问到的属性和方法保证安全2、概念:指的是在设计时不对外提供隐藏起来提供公共方法以外对其方法就是把属性和方法封装到一个抽象的类中3、封装相当于一个黑盒子我们将事务相关的属性和方法封装在一个类中在调用类创建实例不用关注内部代码的实现细节我们只要调用结果就可以。4、封装的优点1封装数据可以很好的保护隐私、2封装方法主要原因是隔离复杂度3封装提高了代码的复用性4隐藏对象的属性和实现细节提供公共方法对其访问5、python中类的封装分为两种1公用共用类中变量和方法公用他们名称前没有下滑线共有的变量和方法在类的外部内部以及子类都可以调用2私用 重点讲解在类中变量和方法中,___下滑线开头命名则改变变量或方法为私用私有的变量和方法只能在内部使用类的尾部以及子类都无法使用。私有属性格式 ___属性名 值 在类的外部不能使用对象不能调用属性私有化封装后的限制a、类可以访问b、类外对象外 不可访问c子类和子类的对象 不可访问案例1数据封装class sjfz():def __init__(self,name,age):self .namenameself.ageage案例2class sjfz(object):def __init__(self,name,age):self .namename #self.ageagedef getname(self):#方法封装print(self.name)案例3封装私用方法class Lei(object):name18age20def __init__(self,name,age):self.namenameself.ageagedef __hs(self): #私有方法print(self.age)def hs3(self):self.__hs() # 私有方法在类的内部可以调用外部不可调用if __name__ __main__:dxLei(zs,18)dx.hs3()案例4封装私有的实例变量class Lei(object):age20def __init__(self,name,age):self.__namenameself.ageagedef __hs(self): #私有方法print(self.__name)def hs3(self):self.__hs() # 私有方法在类的内部可以调用外部不可调用if __name__ __main__:dxLei(zs,18)print(dx.age)案例5私有变量可以修改class Lei(object):age20def __init__(self,name,age):self.__namenameself.ageagedef hs(self,newname): #私有方法self.__namenewnamedef hs3(self):print(self.__name) # 私有方法在类的内部可以调用外部不可调用if __name__ __main__:dxLei(zs,18)dx.hs(ww)dx.hs3()二继承1、单继承class f():def qian(self):print(有一个亿)def car(self):print(车)def fang(self):print(房)class s(f):def wy(self):print(无业)def wck(self):print(无存款)if __name__ __main__:dxs()dx.wck()dx.wy()dx.car()dx.fang()dx.qian()dx1f()dx1.car()dx1.fang()dx1.qian()2、多继承class f():def qian(self):print(有一个亿)def car(self):print(车)def fang(self):print(房)class m():def gs(self):print(公司)def k(self):print(矿)def fj(self):print( 飞机)class s(f,m):def wy(self):print(无业)def wck(self):print(无存款)if __name__ __main__:dxs()dx.wck()dx.wy()dx.car()dx.fang()dx.qian()dx.fj()dx.gs()dx.k()dx1f()dx1.car()dx1.fang()dx1.qian()三、python多态案例1def hs(a):print(a)hs(1)#1hs(a) #aprint(中文) #中文案例2class Animal(object):def talk(self):print(我是动物)class Cat(Animal):def talk(self):print(喵喵)class Dog(Animal):def talk(self):print(汪汪)if __name__ __main__:c Cat()c.talk()dDog()d.talk()aAnimal()a.talk()案例class F(object):def work(self):print(工作)class s1(F): #s1继承父类F ,def work(self): 重写父类的work方法print(测试)class s2(F):def work(self):print(开发)class s3():def work(self,F):F.work()if __name__ __main__:dxF()dx1s1()dx2s2()dx3s3()dx3.work(dx)