亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

python 面向對象02

標簽:
Python

python 面向对象02

面向对象三大特性:封装、继承、多态


封装:隐藏实现细节,对外提供方法调用


继承:代码的重用性


多态:同一个方法,不同实例对象调用,结果不一样


python 支持多继承(一个类,有多个父类)

说明:当不同的父类中出现同名方法时,识别靠前类中的方法。


所有类默认继承:object 类


定义子类时,必须调用父类的构造函数。


class Person:


    def __init__(self, name, age):

        self.name = name

        self.__age = age


    def say_age(self):

        print(self.name, "的年龄是:", self.__age)



class Student(Person):

    def __init__(self, name, age, score):

        self.score = score

        Person.__init__(self, name, age)  # 构造函数中包含调用父类构



s1 = Student("张三", 15, 85)

s1.say_age()

print(dir(s1))


继承

子类继承父类所有成员(继承了并不一定能用)


重写

特:重写是在继承的基础之上。没有类之间的继承关系,就没有重写。


重写定义:父类中的方法,子类在调用时发现,无法满足子类需求,子类对该方法进行了重新定义。

class Person:


    def __init__(self, name, age):


        self.name = name

        self.age = age



def say_age(self):

    print(self.name, "的年龄是:", self.age)



def say_name(self):

    print("我是", self.name)



class Student(Person):


    def __init__(self, name, age, score):

        self.score = score

        Person.__init__(self, name, age)  # 构造函数中包含调用父类构造函数



def say_score(self):

    print(self.name, "的分数是:", self.score)



def say_name(self):  # 重写父类的方法

    print("报告老师,我是", self.name)



s1 = Student("张三", 15, 85)

s1.say_score()

s1.say_age()

s1.say_name() # 关注该方法调用,输出的结果


类的继承结构

类.mro()


dir() 查看对象属性


自定义类跟object类对比

class Person:


    def __init__(self, name, age):

        self.name = name

        self.age = age


    def say_age(self):

        print(self.name, "的年龄是:", self.age)



obj = object() # 语法里面是定义了object 类的

print(dir(obj))


s2 = Person("高淇", 18)

print(dir(s2))



重写__str__()方法


class Person:

    def __init__(self, name, age):

        self.name = name

        self.__age = age



def __str__(self):

    return "名字是:{0},年龄是{1}".format(self.name, self.__age)



p = Person("高淇", 18)

print(p)



super()


class A:


    def say(self):

        print("A: ", self)

        print("say AAA")



class B(A):


    def say(self):

        super().say()  # 通过 super()调用父类的方法

        print("say BBB")



b = B()

b.say()


多态


方法被不同对象调用结果不同


class Animal:

    def shout(self):

        print("动物叫了一声")



class Dog(Animal):

    def shout(self):

        print("小狗,汪汪汪")



class Cat(Animal):

    def shout(self):

        print("小猫,喵喵喵")



def animalShout(a):

    if isinstance(a, Animal):

        a.shout()



animalShout(Dog())

animalShout(Cat())


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消