Python面向对象

(一)面向对象的介绍

描述一个人的行为和信息很容易,但是代码通常是处理大量数据,这个时候如果使用相同的变量名肯定会冲突,使用不同的变量名又会很麻烦,同时其他人也不容易知道定义了哪些内容。这时我们就可以借鉴函数封装的思想,再次对函数和变量进行封装,来提高代码的复用性。通过这样的封装把与人相关的变量放在一起,只要找到这个部分代码,就能知道关于人定义了哪些变量和函数。通常我们把用关键字class定义的代码块称为类。在类里的变量称为类的属性,类里的函数称为类的方法。

(二)类的定义和使用

def定义函数,class定义类,在定义类时首字母大写(规范是这样,不大写也可以)。
使用时是通过对象.属性----对象.方法()

class Person:
    def __init__(self, name,age,sex):   #__int__初始化方法,进行共同属性的初始化赋值
        self.name = name                #self代表实例对象本身
        self.age = age
        self.sex = sex

    def play(self):           #在类里面每一个方法都要有self,因为要知道是谁在使用这个方法
        print(f'{self.name}在看书')


zs = Person('张三',18,'男')
ls = Person('李四',20,'女')

在这里插入图片描述
这里如果我们想要提前对某一对象进行删除,可以用到析构方法。

class Person:
    def __init__(self, name,age,sex):   #__int__初始化方法,进行共同属性的初始化赋值
        self.name = name                #self代表实例对象本身
        self.age = age
        self.sex = sex

    def play(self):
        print(f'{self.name}在看书')


    def __del__(self):                  #析构方法,对象被删除时自动调用,释放内存空间
        print(f'{self.name}已经被删除')

   #双下划线定义的方法叫做魔法方法,在特定场景使用


zs = Person('张三',18,'男')
ls = Person('李四',20,'女')

在这里插入图片描述
当然析构方法不定义也可以进行使用,只不过自己定义后会根据自己的设定进行提示。

(三)继承与多继承

(1)继承

继承是子类继承父类,可以拥有父类所有属性和方法。

class Person:
    a = '人类'  #直接定义在类里面的变量,没有赋值给实例对象的就是类属性。
    def __init__(self, name,age,sex):
        self.name = name               
        self.age = age
        self.sex = sex

    def hobby(self):
        print('所有人都有爱好')

class boy(Person):
    a = '男生'
    def hobby(self):   #重写  子类重写父类的方法
        print(f'{self.name}是男生,喜欢rap,篮球')

class girl(Person):
    a = '女生'
    def hobby(self):
        print(f'{self.name}是女生,喜欢唱跳')


zs = boy('张三',18,'男')
ls = girl('李四',20,'女')

在这里插入图片描述

在继承的基础上可以有自己的方法。如果想要继续使用父类的方法功能可以使用super().方法()

class boy(Person):
    a = '男生'
    def hobby(self):   #重写  子类重写父类的方法
        super().hobby()      #重写父类方法后还想要使用父类方法的功能
        print(f'{self.name}是男生,喜欢rap,篮球')

在这里插入图片描述

(2)多继承

多继承使用super().方法()时要注意继承顺序。通过类.mro()查询继承顺序。

class Person:
    a = '人类'  #直接定义在类里面的变量,没有赋值给实例对象的就是类属性。
    def __init__(self, name,age,sex):
        self.name = name               
        self.age = age
        self.sex = sex

    def hobby(self):
        print('所有人都有爱好')

class boy(Person):
    a = '男生'
    def hobby(self):   #重写  子类重写父类的方法
        super().hobby()      #重写父类方法后还想要使用父类方法的功能
        print(f'{self.name}是男生,喜欢rap,篮球')

class girl(Person):
    a = '女生'
    def hobby(self):
        print(f'{self.name}是女生,喜欢唱跳')

class Son(boy,girl):         #多继承要注意继承顺序
    pass


xm = Son('小明',5,'女')

在这里插入图片描述
如果不加super语句,继承会按照就近原则,即继承boy类。
如果把supper语句放到girl类,则依然是继承boy类,因为只需要执行hobby。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值