Python档案袋( 面向对象 )
发布时间:2021-05-21 07:05:22 所属栏目:大数据 来源: https://www.jb51.cc
导读:类即是一个模型,根据模型建立起不同的对象,对象间拥有共同的一些属性 简单的类: 1 class P: 2 # 类变量,所有实例共享变量,推荐使用方法是:类名.类变量名 3 pvarx= " ppvar1 " 4 5 构造函数 6 def __init__ (self,valuex): 7 实例变量,只属于当前实例 8
类即是一个模型,根据模型建立起不同的对象,对象间拥有共同的一些属性 简单的类: 1 class P: 2 #类变量,所有实例共享变量,推荐使用方法是:类名.类变量名 3 pvarx="ppvar1" 4 5 构造函数 6 def __init__(self,valuex): 7 实例变量,只属于当前实例 8 self.valuex=valuex 9 10 类方法 11 def pfun1(self): 12 print(类方法1输出",self.valuex,P.pvarx) 13 14 析构函数,先生成,先死亡 15 __del__(self): 16 再见,实例:17 18 创建对象,类的实例化 19 p1=P(传递参数) 20 21 调用类变量 22 P.pvarx=1122233323 24 调用类方法 25 p1.pfun1() 26 27 删除对象,变量等,直接使用del() 28 del p1 类变量和实例变量:类变量: 类及所有实例共享变量,推荐使用方法是 【类名.变量名】 实例变量(self.变量名): 只属于当前实例 注意: 如果同名且用实例调用时,则优先寻找到实例变量 使用实例调用并修改类变量值时,只能修改自己的,不影响整体 类方法使用全局变量: Global声明变量为外部变量,表示可以长久修改外部变量,不写则只能使用,不能修改 1 varx=1 外部变量 2 3 XX: 4 funx(self): 5 global varx #声明为外部变量,表示可以长久修改外部变量,不写则只能使用 6 varx=111 ------",varx) 输出:111 8 9 x=XX() 10 x.funx() 11 print(varx) 输出:1 类属性的私有化 私有变量: 在变量前加两个下划线即可,如【self.__变量名】,只能在类内访问,不能在类外通过实例访问 私有方法: 在类方法名前加入两个下划线,如【def __方法名(self){}】,使用与上相同 类的继承:类可以实现多继承,多继承则可以用逗号分隔类名,如:子类名(父类1,父类2),继承的执行时从左到右,在列子中是先执行父类1,然后执行父类2 2 pvarx= 3 类构造方法 6 print(var1x) 7 8 9 PPPPPP10 继承P类 12 P1(P): 13 重写父类的方法 15 P.pfun1(self) #调用父类的方法1 p1p1p1p1p1p118 p1=P1(ppp111")实例化 19 20 P.pfun1(p1)调用父类的方法2 构造函数: 如果子类有自己的构造函数,则必须在子类构造函数里调用父类的构造函数,如果父类的构造函数参数为空,则可忽略。使用下列方法1可以实现多继承效果,一句就可以实现多个父类的构造函数,只是其中父类的构造函数参数必须相同
super(P1,self).__init__(v1) #执行父类构造函数方法一 P(v1) #执行父类构造函数方法二 P.__init__(self,v1) 方法三 print(v1,v3) 实例变量的继承: 父类中可以访问子类的实例变量 P: 类方法 pfun1(self): P1(P): p1v p1=P1(22222)实例化 p1.pfun1() 输出:PPPPPP 22222 多态一个方法的多种实现,通过传递实例对象,实现调用实例中对应的方法 pto(obj):
obj.funx()
静态方法:通过类名调用,与实例无关 P: @staticmethod funx(varpx): -----------dongxiaodong") 类内方法:不可访问实例变量,只能访问类变量: 类变量 classvarx=112233" (self): self.xvar=类方法不可访问此实例变量类内方法 @classmethod funx(self,varpx): P() p1.funx(") 属性方法:调用简单,调用时如同使用变量 P: 属性方法 @property funx(self): ) p1=P() p1.funx 调用,如同变量调用 内容补充: 2 funxvar11x=xxxx 3 4 5 @property 6 7 9 @funx.setter 10 11 P.funxvar11x=funxvar11 12 13 @funx.deleter 14 15 del P.funxvar11x 16 17 p1=P() 18 p1.funx 输出:----------- xxxx 19 p1.funx=1122" 赋值 20 p1.funx 输出:----------- 1122 21 22 del p1.funx 删除 类的一些特殊方法2 __call__(self,*args,**kwargs): 3 ----call---- 5 p1= 6 7 p1(11对象加括号传递参数,自动调用类中的call方法 8 print(p1.__class__) 得到所属类名 print(P.__dict__) 类名调用,打印类里的所有属性 实例调用,打印实例的所有属性 反射pfunx(self,name): ---- pfunx ---- 7 if hasattr(p1,pfunx"): 判断对象里是否有某个方法 8 funx=getattr(p1,1)">") 得到改方法的内存地址 9 funx(调用该方法 11 setattr(p1,1)">pvar设置实例变量值,没有则新建实例变量 12 print(getattr(p1,1)">")) 使用实例变量 13 delattr(p1,1)">") 删除实例变量 (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |