Python之面向对象

一、多继承

1、多继承

多继承:就是让一个类同时继承多个类

注意:实际开发的时候,一般不使用多继承

2、多态

类的特点:封装、继承、多态

封装:可以对多条数据(属性)和多个功能(方法)进行封装

继承:可以让一个类拥有另外一个类的属性和方法

多态:有继承就有多态(一个事物的多种形态) 类的重写也是多态

二、运算符重载

1、别的语言的函数和函数的重载

C++/java声明函数的语法:

返回值类型 函数名(参数列表){
    函数体
}
int func1(){

}
int func1(int a){

}
int func1(char a){

}
int func1(int a, int b){

}

上面4个函数式不同的函数(可以同时存在);

Python中的函数不支持重载(Python中的函数式变量)

def func1():
    pass
def func1(a):
    pass
def func1(a, b):
    pass

最终只保留最后这一个func1,前面的会被覆盖

2、运算符重载

Python中使用运算符的时候,实质是在调用相应的魔法方法(Python中每个运算符都对应一个魔法方法)

运算符重载:在不同的类中实现同一个运算符对应的魔法方法,来让类的对象支持相应的运算

+ 重载:

数据1 + 数据2 -> 数据1会传给self 数据2会传给other

注意:比较运算中 大于和小于 一般情况下只需要重载一个 另外一个自动支持

例如:

class Student(object):
    def __init__(self, name='', score=0, age=0):
        self.name = name
        self.score = score
        self.age = age

    # 加法运算符的重载
    def __add__(self, other):
        # self + other
        return self.score + other.score

    # 减法运算符的重载
    def __sub__(self, other):
        # self - other
        return self.age - other.age

    # 小于运算的重载
    def __lt__(self, other):
        return self.score < other.score

    def __repr__(self):
        return '<' + (str(self.__dict__)[1:-1]) + '>'


stu1 = Student('小花', 90, 16)
stu2 = Student('小明', 80, 18)
stu3 = Student('小红', 75, 22)
stu4 = Student('小方', 40, 11)
print(stu1 + stu2)
print(stu2 - stu1)

list_student = [stu1, stu2, stu3, stu4]
list_student.sort()
print(list_student)
print(max(list_student))

三、内存管理机制

1、堆和栈

内存区域里面分为堆区间和栈区间:栈区间的内存的开辟和释放是自动的,堆区间的内存是手动开辟手动释放的;内存管理管理的是堆区间的内存。

2、数据的存储

  • a.Python中所有的数据都是对象 都是保存在堆中的
  • b.Python中所有的变量存储的都是存在堆中的数据的地址 存了对象的地址的变量又叫对象的引用
  • c.默认情况下创建对象就会在堆中去开辟空间,存储数据,并且将这个地址返回; 如果对象是数字、字符串,会做缓存,而且每次使用的时候会先去缓存中看之前有没有存过, 如果有就直接返回之前的数据的地址,没有才开辟新的空间存储数据。

3、数据的销毁

Python中通过“垃圾回收机制”来管理内存的释放。

  • 原理:看一个对象(数据)是否销毁,就看这儿对象的引用计数是否为0,为0就销毁,不为0就不销毁
  • 引用计数:对象的引用个数
  • a.增加引用计数:使用变量存对象的地址
    from sys import getrefcount
    getrefcount(对象) - 回去指定对象的引用计数
  • b.减少引用计数:删除引用,或让当前对象的引用成为别的对象的引用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值