Python|总结|类和对象

来源:互联网 发布:真正的粉丝就算 知乎 编辑:程序博客网 时间:2024/06/05 08:46

类比理解:自行定义的类型,实际就是分类,象把猫科动物和犬科分类一样.


A特性

A1|类,类对象和实例对象.

类就是这个类别的属性和方法集合,是这个类里面所有对象的普适性规律.

类对象在类创造的一瞬间就形成,区别于实例对象,类对象也是独立开来的.

实例对象是利用贴标签创造的概念.

A2|self

self是属性前面的'指令',当访问实例对象的数据时候,例如访问A的type数据,系统内应该是访问A.type,A会自动传入self作为指引,找到相关的数据.

A3|魔法方法

是本身自带的类的方法函数

B基本操作

B1|继承

父类继承,通过class定义时,在子类后面加入父类的名称 class x(a,b,c)#尽量少用这样的方法,

super函数,系统自动根据父类的特性进行继承


B2|组合

将多个关联小的类放入一个新类进行定义事例对象,例如

class A:
    def __init__(self,x):
        self.num = x
        
class B:
    def __init__(self,x):
        self.num = x
        
class C:
    def __init__(self,x,y):
        self.A = A(x)
        self.B = B(y)


    def print_num(self):
        print(self.A.num,self.B.num)

可以理解为C是公会,A是战士,B是奶妈,那么我创建一个C类事例对象x公会时,我传入了x = 5,y = 6,就同时创建了5个A战士,6个B奶妈.这些战士奶妈虽然是在C类中,但他们依然继承了A,B类的属性.只不过在访问他们自身属性时,要求带上C类的标签,因为他们并不是独立创建的角色,而是在C公会的要求下按照A,B职业创造的,所以是以C为大哥,访问时必须带上大哥的名号,否则就是不敬



C相关操作

C1|相关BIF

issubclass(class,classinfo)布尔:class是否classinfo的子类,classinfo可以是元组

isinstance(obj,classinfo)布尔:obj是否classinfo的实力对象,classinfo可以是元组

hasattr(obj,name).布尔:obj是否有名为name的方法

getattr(obj,name[,default)返回Obj名为name方法的值,设定了default则返回设定值

setattr(obj,name,value)给obj设定名为Name的方法,赋予value的值

C2|修饰符

实际上就是将后面的函数化作修饰符函数中的变量函数进行运行,也就是简便地进行内嵌


0 0
原创粉丝点击