類別的繼承
1、定義類別的繼承
首先我們來看下類別的繼承的基本語法:
class ClassName(BaseClassName): <statement-1> . . . <statement-N>
在定義類別的時候,可以在括號裡寫繼承的類,一開始也提到過,如果不用繼承類的時候,也要寫繼承object 類,因為在Python 中object 類是一切類的父類。
當然上面的是單繼承,Python 也是支援多繼承的,具體的語法如下:
class ClassName(Base1,Base2,Base3): <statement-1> . . . <statement-N>
多繼承有一點需要注意的:若是父類別中有相同的方法名,而在子類別使用時未指定,python 在圓括號中父類別的順序,從左到右搜索, 即方法在子類別中未找到時,從左到右查找父類別中是否包含方法。
那麼繼承的子類別可以做什麼呢?
繼承的子類別的好處:
會繼承父類別的屬性和方法
可以自己定義,覆寫父類別的屬性和方法
#2、呼叫父類別的方法
一個類別繼承了父類別後,可以直接呼叫父類別的方法的,例如下面的例子,UserInfo2 繼承自父類別UserInfo ,可以直接呼叫父類別的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))
# 打印构造函数中的属性
print(userInfo2.__dict__)
print(UserInfo2.get_name())最後列印的結果:

#這裡就是重寫了父類別的建構子。
4、子類別的型別判斷
對於 class 的繼承關係來說,有些時候我們需要判斷 class 的型別,該怎麼辦呢?
可以用 isinstance() 函數,
一個例子就能看懂 isinstance() 函數的用法了。
#!/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))輸出的結果如下:
True True True True True False
可以看到 isinstance() 不僅可以告訴我們,一個物件是否是某種類型,也可以用於基本類型的判斷。
新建檔案
預覽
Clear
- 課程推薦
- 課件下載
課件暫不提供下載,工作人員正在整理中,後期請多關注該課程~ 















