python入門之類的繼承

2021-10-22 12:19:10 字數 2918 閱讀 4191

類的繼承

1、定義類的繼承

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

class classname(baseclassname):

1、定義類的繼承

首先我們來看下類的繼承的基本語法:class classname(baseclassname):

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

當然上面的是單繼承,python 也是支援多繼承的,具體的語法如下:class classname(base1,base2,base3):

多繼承有一點需要注意的:若是父類中有相同的方法名,而在子類使用時未指定,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, ***):

super(userinfo2, self).__init__(name, age, account)

self.*** = ***;

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() 不僅可以告訴我們,乙個物件是否是某種型別,也可以用於基本型別的判斷。

任務?不會了怎麼辦

Python 入門之類的繼承

from animalstest import animals 請在下面填入定義fish類的 fish類繼承自animals類 begin class fish animals end def init self,name self.name name defswim self print s會游泳...

Python 入門之類的繼承(二)

r星校長 第2關 覆蓋方法 在子類繼承父類的方法時,若子類需要這個方法具有不同的功能,那麼可以通過覆蓋 overriding 來重寫這個方法。本關的任務是讓學習者掌握通過繼承覆蓋方法。通過繼承覆蓋方法,也就是在子類裡再寫乙個與父類中一樣的方法,實現自己想要實現的功能。例如 class parent ...

Python 入門之類的繼承(四)

r星校長 第4關 多重繼承 在 python 中,多重繼承就是允許子類繼承多個父類,子類可以呼叫多個父類的方法和屬性。但是,當多個父類擁有相同方法名的方法時,我們通過方法名呼叫父類方法就有一定的順序。本關的任務就是讓學習者掌握多重繼承。請先看下面這個例子 classa object deftest ...