亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

類的繼承

1、定義類的繼承

首先我們來看下類的繼承的基本語法:

class ClassName(BaseClassName):
    <statement-1>
    .
    .
    .
    <statement-N>

在定義類的時候,可以在括號里寫繼承的類,一開始也提到過,如果不用繼承類的時候,也要寫繼承 object 類,因為在 Python 中 object 類是一切類的父類。

當然上面的是單繼承,Python 也是支持多繼承的,具體的語法如下:

class ClassName(Base1,Base2,Base3):
    <statement-1>
    .
    .
    .
    <statement-N>

多繼承有一點需要注意的:若是父類中有相同的方法名,而在子類使用時未指定,python 在圓括號中父類的順序,從左至右搜索 , 即方法在子類中未找到時,從左到右查找父類中是否包含方法。

那么繼承的子類可以干什么呢?

繼承的子類的好處:

會繼承父類的屬性和方法

可以自己定義,覆蓋父類的屬性和方法

2、調(diào)用父類的方法

一個類繼承了父類后,可以直接調(diào)用父類的方法的,比如下面的例子,UserInfo2 繼承自父類 UserInfo ,可以直接調(diào)用父類的 get_account 方法。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class UserInfo(object):
    lv = 5
    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account
    def get_account(self):
        return self.__account
class UserInfo2(UserInfo):
    pass
if __name__ == '__main__':
    userInfo2 = UserInfo2('兩點水', 23, 347073565);
    print(userInfo2.get_account())

3、父類方法的重寫

當然,也可以重寫父類的方法。

示例:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
class UserInfo(object):
    lv = 5
    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account
    def get_account(self):
        return self.__account
    @classmethod
    def get_name(cls):
        return cls.lv
    @property
    def get_age(self):
        return self._age
class UserInfo2(UserInfo):
    def __init__(self, name, age, account, sex):
        super(UserInfo2, self).__init__(name, age, account)
        self.sex = sex;
if __name__ == '__main__':
    userInfo2 = UserInfo2('兩點水', 23, 347073565, '男');
    # 打印所有屬性
    print(dir(userInfo2))
    # 打印構(gòu)造函數(shù)中的屬性
    print(userInfo2.__dict__)
    print(UserInfo2.get_name())

最后打印的結(jié)果:

cbf5cc8617f8b40e0e38e94fd0d892e.png

這里就是重寫了父類的構(gòu)造函數(shù)。

4、子類的類型判斷

對于 class 的繼承關(guān)系來說,有些時候我們需要判斷 class 的類型,該怎么辦呢?

可以使用 isinstance() 函數(shù),

一個例子就能看懂 isinstance() 函數(shù)的用法了。

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
class User1(object):
    pass
class User2(User1):
    pass
class User3(User2):
    pass
if __name__ == '__main__':
    user1 = User1()
    user2 = User2()
    user3 = User3()
    # isinstance()就可以告訴我們,一個對象是否是某種類型
    print(isinstance(user3, User2))
    print(isinstance(user3, User1))
    print(isinstance(user3, User3))
    # 基本類型也可以用isinstance()判斷
    print(isinstance('兩點水', str))
    print(isinstance(347073565, int))
    print(isinstance(347073565, str))

輸出的結(jié)果如下:

True
True
True
True
True
False

可以看到 isinstance() 不僅可以告訴我們,一個對象是否是某種類型,也可以用于基本類型的判斷。

繼續(xù)學習