Day16-总结

1.多继承

'''
python中的类支持多继承
class 子类(父类1, 父类2)
pass
'''

class Fly(object):
    F_num = 2

    def __init__(self):
        self.height = 0
        self.speed = 0
        self.time = 0

    def start(self, speed):
        self.speed = speed
        print('开始飞行')


class Animal(object):
    num = 4

    def __init__(self):
        self.age = 0
        self.gender = '公'

    @staticmethod
    def eat(food):
        print('吃'+food)


class Bird(Animal, Fly):
    pass

# 字段可以继承
# 方法都可以继承
# 只能继承第一个父类的对象属性

1.运算符

'''
python中所有的数据类型本质都是类,所有的数据本质就是对象。
在使用运算符对数据进行操作的时候,实质是调用运算符对应的魔法方法
运算符前面的数据类型,决定类函数调用哪个类中对应的魔法方法
每个运算符都有自己固定的魔法方法,看某种类型的数据是否支持某种运算符就看这个类型中有没有实现对应的魔法方法
'''

class Student:
    def __init__(self, name, age, tel):
        self.name = name
        self.age = age
        self.tel = tel

    def __repr__(self):
        return '<%s>' % str(self.__dict__)[1:-1]
    # + 对应的魔法方法:实现两个对象求和
    # self + other  ->  self.__add__(other)

    def __add__(self, q):
        print(q.name)
        return self.age + q.age

    def __mul__(self, other):
        return self.age * other

    # self < other
    # 注意:<和>只需要重载一个,另外一个自动支持
    def __lt__(self, other):
        return self.age < other.age


# stu1 = Student('小明', 34, 232)
# stu2 = Student('小红', 4, 213)
# stu3 = Student('小东', 45, 2321)
# print(stu1+stu2)
all_student = [
    Student('stu1', 23, 2321),
    Student('stu2', 33, 2331),
    Student('stu3', 43, 2351),
    Student('stu4', 53, 1321)
]
all_student.sort()
print(all_student)

手动的内存管理

'''
内存分为栈区间和堆区间,栈区间中的内存是自动开辟自动释放;堆上的内存需要程序员写代码申请和释放
'''

1.内存的开辟

'''
python中所有的类型都是类,所以所有的数据都是对象。对象都是保存在堆区间;变量是保存在栈区间,
变量中实际存储的是堆中存储的数据的地址。(变量的本质就是指针)
注意: 除了数字和字符串对象,其他的数据都是每次需要数据的时候直接在堆中开辟空间。
数字和字符串会先检查这个数据之前是否保存过,如果保存过就直接用之前的数据,否则才开辟新的内存空间
'''

2.内存的释放

'''
python中内存的释放采用的是'垃圾回收机制'自动释放
a.垃圾回收机制:1)看一个数据是否需要销毁(是否需要回收),就看这个对象的引用计数是否为0(引用:保存对象地址的数据)
2)如果这个对象的引用计数不为零就假设当前对象消失,然后看会不会有其他对象因为他的消失引用计数变成0
(循环引用解环)
注意:用一个变量给另一个变量赋值,实质赋的是地址
补充:import在导入模块的时候会检查这个模块之前是否已经导入过,如果导入过不会重复导入
'''

# 面试题:== 与 is的区别
# is的使用 - 判断两个数据的地址是否一样
# == - 判断两个数据的值是否一样
num = 3
num2 = 3
list1 = [2, 3]
list2 = [2, 3]
list3 = list1
print(num is num2)
print(list1 is list2)
print(list1 is list3)

使用变量的三种情况

1.直接赋值 - 赋的是地址,赋完值值之后两个变量一模一样

'''
变量1 = 变量2
'''
list1 = [1, 2, 3]
list2 = list1

2.浅拷贝

'''
列表[:]、列表.copy()、copy.copy()
浅拷贝是直接复制被拷贝的数据产生一个新的地址,将新的地址赋给变量;如果被拷贝的对象中有子对象,子对象不会被复制
'''

class Student:
    def __init__(self, name, age, tel):
        self.name = name
        self.age = age
        self.tel = tel
        self.dog = None

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


class Dog:
    def __init__(self, name, color):
        self.name = name
        self.color = color

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


dog1 = Dog('猪皮', '黄色')
stu1 = Student('小明', 23, 12345)
stu1.dog = dog1
stu2 = copy.copy(stu1)
stu2.name = '小红'
print(stu1, stu2)

3.深拷贝

'''
copy.deepcopy()
浅拷贝是直接复制被拷贝的数据产生一个新的地址,将新的地址赋给变量;如果被拷贝的对象中有子对象,子对象也会被复制
'''

stu1 = Student('小明', 23, 12345)
stu1.dog = dog1
stu3 = copy.deepcopy(stu1)
stu3.dog.color = '白色'
stu3.name = '小东'
print(stu1, stu3)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,094评论 1 32
  • 1.多继承 python中的类支持多继承 class 子类(父类1,父类2,....):pass 父类的字段和方法...
    itachhh阅读 50评论 0 0
  • 一、运算符重载 通过在类中实现运算符对应的魔法方法,来让类的对象支持相关运算符的操作 python中所有的数据类型...
    墨2019418阅读 161评论 0 0
  • python 所有的数据类型都是类,数据都是对象所有的运算符操作,本质都是调用数据对应的魔法方法每个运算符对应一个...
    3981cff33903阅读 247评论 0 0
  • day16 一个子类继承多个父类时,只能继承一个父类的对象属性,能继承所有方法和类字段 在一个类继承多个类时,类名...
    664a159048ed阅读 164评论 0 0