Bootstrap

python类的简易知识

#类#

类是一类事物的抽象,它定义了一类事物的属性和功能。
类由类名、属性和方法三部分构成。

对于方法的理解,我更偏向于功能,即这个类的作用

class 类名:
    def 方法名:
        方法体

对象

对象是类的一个实例,可以理解为得出的一个具体的东西

对象创建

变量=类名([参数列表])

对象的地址

创建对象的过程是在内存中开辟一块区域存储这个对象,这个内存区域由对应的地址 

示例

因为类比较抽象,所以我们以大家众所周知的王者荣耀为例子!首先选英雄之前得有这个英雄,所以我们建立一个英雄这个类,用于保存我们的英雄角色

代码演示

 class Hero:      #建立 Hero 这个类名
    def 平A(self):     # 平A 就是方法名,也就是这个英雄的功能,self是必须的(固定格式)
        print('进行一次攻击')

    def Q技能(self):
        print('释放Q技能')

    def R技能(self):
        print('释放R技能')

哪吒 = Hero()      #对象创建,建立一个具体的变量,也就是我们要选的英雄哪吒
哪吒.平A()      #使用英雄类里面的功能

哪吒.Q技能()

哪吒.R技能()

 结果演示

__init__构造方法

init构造方法的作用是在创建一个类的对象时,对对象进行一些初始化操作,在创建对象时会自动被调用,简单来说,就是类默认含有的

示例

依然用王者荣耀的英雄为例,简单来说,__init__就是英雄本身的属性,例如血量,名字,移速之类的

代码演示

class Hero:
    def __init__(self,name,HP,speed):      #建立英雄默认含有的属性
        print('英雄登场')
        self.NAME=name     #用大小写区分更好的区分name和NAME

                                         #参数要先传递后才能别调用
        print('英雄名称:{}'.format(self.NAME))     #用format表示字符串
        self.HP = HP
        print('英雄血量:%d'%self.HP)      #用%d表示数字
        self.SPEED = speed
        print('英雄移速:%d'%self.HP)
    def 平A(self):
        print('进行一次攻击')

    def Q技能(self):
        print('释放Q技能')

    def R技能(self):
        print('释放R技能')

哪吒 = Hero('哪吒',500,100)      #要一一对应name,HP,speed

哪吒.平A()

哪吒.Q技能()

哪吒.R技能()

结果演示 

 

#继承#

单继承

子类只继承一个父类

class son(father)

 构造方法

如果子类在构建时没有没有定义构造方法,则子类会自动调用父类的构造方法

在子类中调用父类

①父类名.方法名[self[,参数列表]]

②super().方法名()

示例①

代码演示

class father:
    def __init__(self):
        print('我是爸爸')
    def money(self):
        print('我的工资是8000')

class son(father):
    def money(self):
        father.money(self)      #用 父类名.方法名[self[,参数列表]] 的方法被子类调用
SON=son()
SON.money()

结果演示

 

结果顺便印证了子类在构建时没有没有定义构造方法,则子类会自动调用父类的构造方法

示例②

代码演示

删掉了父类的构造方法(因为觉得让示例的代码太长了)

class father:
    def money(self):
        print('我的工资是8000')

class son(father):
    def money(self):
        super().money()
SON=son()
SON.money()

结果演示 

重写

在子类中定义与父类同名的方法

示例
代码演示

class father:
    def money(self):
        print('我的工资是8000')
class son(father):
    def money(self):
        print('我的工资是10000')
SON=son()
SON.money()

结果演示

多继承

格式

class son(father1,father2)

 同名问题

当子类和多个父类都拥有一样的方法名时,方法被调用的优先级如:son>father1>father2

可以使用 print(类名.__mro__) 的方法打印方法被调用的优先级

示例
代码演示

class father:
    def money(self):
        print('我的工资是8000')
class mother:
    def money(self):
        print('我的工资是7000')
class son(father,mother):
    def money(self):
        print('我的工资是10000')
SON=son()
SON.money()

print(son.__mro__)

结果演示 

由此可见,当子类和多个父类都拥有一样的方法名时,优先调用子类,其次是father1>father2

 

;