day14面向?qū)ο?2)

01-重寫

繼承后,子類可以擁有除父類繼承的內(nèi)容以外的其他的內(nèi)容

  • 1.關于方法
    • 1).在子類中可以直接添加其他的方法
    • 2).重寫:
      • a.完全重寫
        重新實現(xiàn)從父類繼承下來的方法锥债,重寫后玖瘸,子類再調(diào)用這個方法的時候驾窟,就調(diào)用子類的
      • b.保留父類實現(xiàn)的功能比驻,再添加新的功能
  • 對象和類調(diào)用方法的過程:

先看當前類是否存在這個方法该溯,沒有才看父類有沒有這個方法岛抄;
如果父類沒有就看父類的父類有沒有,直到找到基類(object)為止

class Animal(object):
    """動物類"""
    def __init__(self):
        self.age = 0
        self.color = ''

    def eat(self):
        print('吃東西')

    def shout(self):
        print('叫喚')

    @classmethod
    def get_number(cls):
        return 100


class Dog(Animal):
    """狗類"""
    def look_after(self):
        print('看家')

    #  重寫父類的shout
    def shout(self):
        print('汪汪汪~')

    # 重寫父類eat方法
    def eat(self):
        # 保留父類eat的功能
        super().eat()
        print('吃骨頭')

    @classmethod
    def get_number(cls):
        # 保留父類的類方法的功能的時候朗伶,還是super().類方法
        print(super().get_number())


if __name__ == '__main__':
    dog = Dog()
    dog.age = 3
    print(dog.color)
    dog.shout()
    dog.look_after()
    dog.eat()

    an = Animal()
    # 繼承后弦撩,父類不能使用在子類中添加的屬性和方法
    # an.look_after()
    an.eat()

    Dog.get_number()

輸出結(jié)果:
汪汪汪~
看家
吃東西
吃骨頭
吃東西
100

02-添加屬性

  • 對象屬性的繼承:是通過繼承init方法來繼承的對象屬性

  • 給當前類添加對象屬性: 重寫init方法。
    注意:如果要保留父類的對象屬性论皆,需要使用super()去調(diào)用父類的init方法

  • 多態(tài):同一個事物有多種形態(tài)。

  • 方法的多態(tài):子類繼承父類的方法猾漫,可以對方法進行重寫点晴,一個方法就有多種形態(tài)(多態(tài)的表現(xiàn))

  • 類的多態(tài):繼承產(chǎn)生多態(tài)

class Person(object):
    """人類"""
    def __init__(self, name, age=0, sex=''):
        self.name = name
        self.age = age
        self.sex = sex

    def eat(self):
        print('人在吃飯')


class Staff(Person):
    # init方法的參數(shù):保證在創(chuàng)建對象的時候就可以給某些屬性賦值
    def __init__(self, name='', age=0, salary=0):
        super().__init__(name, age)
        self.salary = salary

    def eat(self):
        print('員工在吃飯')

class Scientist(Person):
    def eat(self):
        print('科學家在吃飯')


if __name__ == '__main__':
    p1 = Person('李四',sex='女')
    p1.eat()

    s1 = Staff(age=18)
    s1.sex = '男'
    print(s1.name)
    s1.salary = 10000
    print(s1.salary)
    s1.eat()


# 練習:
"""
聲明人類,有屬性悯周,名字粒督、年齡、性別禽翼、身高
要求創(chuàng)建人的對象的時候可以給名字屠橄、性別、年齡賦初值

再創(chuàng)建學生類繼承自人類闰挡,擁有人類的所有的屬性锐墙,再添加學號、成績长酗、電話屬性
要求創(chuàng)建學生對象的時候可以給名字溪北、年齡和電話賦初值
"""
class Person2:
    """人類"""
    a = 10

    def __init__(self, name, sex, age):
        self.name = name
        self.age = age
        self.sex = sex
        self.height = 0


class Student(Person2):
    """學生類"""
    b = 100

    def __init__(self, name='', age=0, tel='00'):
        super().__init__(name, age=age, sex='女')
        self.study_id = '00'
        self.score = 0
        self.tel = tel


stu = Student('李四')
stu.sex = '男'
print(stu.age)

p1 = Person2('張三', '男', 18)

輸出結(jié)果:
人在吃飯

10000
員工在吃飯
0

03-運算符的重載

  • 重載:
    • 一個類中可以有多個名字相同的方法,但是參數(shù)不一樣,就叫做重載.python中不支持重載
class Student:

    # def run(self):
    #     print('run')

    def run(self,name):
        print("%s ran" % name)

"""
2.運算符重載(重新定義運算符運算的過程)
<,>
大于和小于符號只需要重載其中的一個,另一個的結(jié)果,直接是重載的結(jié)果取反
+,-
"""

class Student2:
    def __init__(self, name='', age=0, height=0):
        self.name = name
        self.age = age
        self.height = height

    # 重載:>
    """
    self > other
    """
    def __gt__(self, other):
        # 比較對象1>對象2的時候是比較他們的height屬性
        return self.height > other.height

    # 重載:<
    def __lt__(self, other):
        return self.age < other.age

    def __add__(self, other):
        return self.age + other.age



if __name__ == '__main__':
    stu = Student()
    stu.run('King')

    stu1 = Student2('aa', 18, 170)
    stu2 = Student2('bb', 10, 140)

    if stu1 > stu2:
        print('==========')

輸出結(jié)果:
King ran
==========

04-python內(nèi)存管理

  • 內(nèi)存中有兩個特殊的區(qū)域:棧,堆

    • 棧:棧中的內(nèi)存是系統(tǒng)自動管理的(內(nèi)存的開辟和釋放) --- 作用域結(jié)束,內(nèi)存就釋放
    • 堆:堆中的內(nèi)存都是需要寫程序去開辟和釋放的(python中這個過程已經(jīng)自動化了)
  • 原理:堆中的數(shù)據(jù)到底是什么時候釋放的?
    看一個對象有幾個引用,當一個值沒有引用的時候,對象對應的內(nèi)存空間就會被釋放
    (引用計數(shù)機制)
    引用:存儲對象地址的變量

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市夺脾,隨后出現(xiàn)的幾起案子之拨,更是在濱河造成了極大的恐慌,老刑警劉巖咧叭,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚀乔,死亡現(xiàn)場離奇詭異,居然都是意外死亡菲茬,警方通過查閱死者的電腦和手機吉挣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來生均,“玉大人听想,你說我怎么就攤上這事÷黼剩” “怎么了汉买?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長佩脊。 經(jīng)常有香客問我蛙粘,道長垫卤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任出牧,我火速辦了婚禮穴肘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘舔痕。我一直安慰自己评抚,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布伯复。 她就那樣靜靜地躺著慨代,像睡著了一般。 火紅的嫁衣襯著肌膚如雪啸如。 梳的紋絲不亂的頭發(fā)上侍匙,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音叮雳,去河邊找鬼想暗。 笑死,一個胖子當著我的面吹牛帘不,可吹牛的內(nèi)容都是我干的说莫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼厌均,長吁一口氣:“原來是場噩夢啊……” “哼唬滑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起棺弊,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤晶密,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后模她,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稻艰,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年侈净,在試婚紗的時候發(fā)現(xiàn)自己被綠了尊勿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡畜侦,死狀恐怖元扔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旋膳,我是刑警寧澤澎语,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響擅羞,放射性物質(zhì)發(fā)生泄漏尸变。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一减俏、第九天 我趴在偏房一處隱蔽的房頂上張望召烂。 院中可真熱鬧,春花似錦娃承、人聲如沸奏夫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽桶蛔。三九已至,卻和暖如春漫谷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹂析。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工舔示, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人电抚。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓惕稻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝙叛。 傳聞我的和親對象是個殘疾皇子俺祠,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容