欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python函數(shù)繼承教程,Python繼承

Python中繼承的理解與運(yùn)用?

9.5. 繼承

石拐網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)

當(dāng)然,如果一種語(yǔ)言不支持繼承就,“類(lèi)”就沒(méi)有什么意義。派生類(lèi)的定義如下所示:

class DerivedClassName(BaseClassName):

命名 BaseClassName (示例中的基類(lèi)名)必須與派生類(lèi)定義在一個(gè)作用域內(nèi)。除了類(lèi),還可以用表達(dá)式,基類(lèi)定義在另一個(gè)模塊中時(shí)這一點(diǎn)非常有用:

class DerivedClassName(modname.BaseClassName):

派生類(lèi)定義的執(zhí)行過(guò)程和基類(lèi)是一樣的。構(gòu)造派生類(lèi)對(duì)象時(shí),就記住了基類(lèi)。這在解析屬性引用的時(shí)候尤其有用:如果在類(lèi)中找不到請(qǐng)求調(diào)用的屬性,就搜索基類(lèi)。如果基類(lèi)是由別的類(lèi)派生而來(lái),這個(gè)規(guī)則會(huì)遞歸的應(yīng)用上去。

派生類(lèi)的實(shí)例化沒(méi)有什么特殊之處: DerivedClassName() (示列中的派生類(lèi))創(chuàng)建一個(gè)新的類(lèi)實(shí)例。方法引用按如下規(guī)則解析:搜索對(duì)應(yīng)的類(lèi)屬性,必要時(shí)沿基類(lèi)鏈逐級(jí)搜索,如果找到了函數(shù)對(duì)象這個(gè)方法引用就是合法的。

派生類(lèi)可能會(huì)覆蓋其基類(lèi)的方法。因?yàn)榉椒ㄕ{(diào)用同一個(gè)對(duì)象中的其它方法時(shí)沒(méi)有特權(quán),基類(lèi)的方法調(diào)用同一個(gè)基類(lèi)的方法時(shí),可能實(shí)際上最終調(diào)用了派生類(lèi)中的覆蓋方法。(對(duì)于 C++ 程序員來(lái)說(shuō),Python 中的所有方法本質(zhì)上都是 虛 方法。)

派生類(lèi)中的覆蓋方法可能是想要擴(kuò)充而不是簡(jiǎn)單的替代基類(lèi)中的重名方法。有一個(gè)簡(jiǎn)單的方法可以直接調(diào)用基類(lèi)方法,只要調(diào)用: BaseClassName.methodname(self, arguments)。有時(shí)這對(duì)于客戶也很有用。(要注意只有 BaseClassName 在同一全局作用域定義或?qū)霑r(shí)才能這樣用。)

Python 有兩個(gè)用于繼承的函數(shù):

函數(shù) isinstance() 用于檢查實(shí)例類(lèi)型: isinstance(obj, int) 只有在 obj.__class__ 是 int 或其它從 int 繼承的類(lèi)型

函數(shù) issubclass() 用于檢查類(lèi)繼承: issubclass(bool, int) 為 True,因?yàn)?bool 是 int 的子類(lèi)。

然而, issubclass(float, int) 為 False,因?yàn)?float 不是 int 的子類(lèi)。

python ssti之繼承鏈利用

總的來(lái)說(shuō)就是調(diào)用python或者框架的內(nèi)建/全局類(lèi),變量,函數(shù)獲取敏感信息/執(zhí)行敏感操作,做題時(shí)先明確題目環(huán)境再去官方文檔中查找全局變量,類(lèi),函數(shù)。

返回當(dāng)前對(duì)象實(shí)例的類(lèi)。

返回一個(gè)由當(dāng)前類(lèi)父類(lèi)構(gòu)成的元組,由于python允許多重繼承。

返回一個(gè)由當(dāng)前函數(shù)可以訪問(wèn)到的變量,方法,模塊組成的字典,不包含該函數(shù)內(nèi)聲明的局部變量。

in python2 func.func_globals is func.__globals__

返回一個(gè)由當(dāng)前類(lèi)的所有子類(lèi)構(gòu)成的列表。

python2中形如

的定義不會(huì)繼承于object對(duì)象,所以不能用__subclasses__()方法,但在python3中即使這樣聲明也會(huì)繼承于object。

返回一個(gè)由內(nèi)建函數(shù)函數(shù)名組成的列表。

返回一個(gè)由當(dāng)前類(lèi)繼承鏈組成的元組。

返回索引為index的值。

利用字符串,列表,元組,字典,集合等基本對(duì)象獲取類(lèi),通過(guò)類(lèi)獲取基本類(lèi)object,通過(guò)object獲取敏感類(lèi)對(duì)象。

創(chuàng)建file對(duì)象后以可通過(guò)read()/write()函數(shù)進(jìn)行文件讀寫(xiě)。

在 object.__subclasses__()[59/139].__init__.__globals__['__builtins__'] 下儲(chǔ)存了一些函數(shù)可供調(diào)用。

既然可以使用if語(yǔ)句,同樣也可以使用類(lèi)似盲注的方式,逐字爆破。

過(guò)濾了括號(hào),沒(méi)法用__subclassess__獲取子類(lèi),并且config和self置空。查看 flask文檔

flask為jinja2模板提供了兩個(gè)函數(shù)get_flashed_messages()和url_for(),選擇任意一個(gè)函數(shù),構(gòu)造payload

{{url_for.__globals__}}

提交后看到回顯里有一個(gè)current_app屬性,構(gòu)造payload

{{url_for.__globals__.current_app.config}} 或者 {{url_for.__globals__.['current_app']['config']}}

即可獲取flag

給出一個(gè)ctftime上的wp

這個(gè)wp中的payload很長(zhǎng)是因?yàn)閟earch函數(shù)進(jìn)行了深度優(yōu)先搜索,利用request作為起點(diǎn)的payload也可以簡(jiǎn)化為

request._get_data_for_json.__globals__['current_app'].config['FLAG'] 。總之就是通過(guò)__globals__獲取全局變量。

Python類(lèi)的繼承與多態(tài)詳細(xì)介紹

類(lèi)(Class): 用來(lái)描述具有相同的屬性和方法的對(duì)象的集合。

類(lèi)變量:類(lèi)變量在整個(gè)實(shí)例化的對(duì)象中是公用的。類(lèi)變量定義在類(lèi)中且在函數(shù)體之外。類(lèi)變量通常不作為實(shí)例變量使用。

類(lèi)有一個(gè)名為 __init__() 的特殊方法(構(gòu)造方法),該方法在類(lèi)實(shí)例化時(shí)會(huì)自動(dòng)調(diào)用

self:self 代表的是類(lèi)的實(shí)例,代表當(dāng)前對(duì)象的地址,而 self.class 則指向類(lèi)。

類(lèi)調(diào)用 Car.weight

實(shí)例化 car01=Car(5)

實(shí)例對(duì)象調(diào)用 car01.weght

我們?cè)跇?gòu)造類(lèi)時(shí),Python3默認(rèn)我們繼承了object這個(gè)基類(lèi),我個(gè)人理解object就是個(gè)空的類(lèi),可以不用管為何要在括號(hào)中寫(xiě)上object,這是Python3的特性,在python2中如果你沒(méi)有寫(xiě)object的話不會(huì)默認(rèn)繼承了object這個(gè)基類(lèi)。

同樣的我們自己希望繼承的父類(lèi)只需要把objetc改為我們自己定義的類(lèi)名即可。子類(lèi)中可以擁有父類(lèi)中所有的公有屬性和方法,但是可以通過(guò)在變量名前加下劃線使其變?yōu)樗接校@樣子類(lèi)就不可以訪問(wèn)父類(lèi)中的成員了。

以下三個(gè)公交車(chē)類(lèi)的父類(lèi)均為客車(chē)類(lèi),我們可以寫(xiě)一個(gè)funcs方法使得每次調(diào)用funcs方法時(shí),傳入不同的對(duì)象以執(zhí)行不同的func方法,具體實(shí)現(xiàn)如下:

主函數(shù) :

可以看到,我將小 汽車(chē) 實(shí)例化為帶有重量為5t的一個(gè)具體對(duì)象,將客車(chē)實(shí)例化為帶有重量為20t的一個(gè)具體對(duì)象,將三個(gè)公交車(chē)實(shí)例化為帶有重量為15t的一個(gè)具體對(duì)象.

如上圖所示,我每次在調(diào)用funcs方法時(shí)都傳入了一個(gè)實(shí)例化對(duì)象,funcs根據(jù)不同的對(duì)象執(zhí)行相應(yīng)的內(nèi)部方法。

python繼承是什么意思

Python是一種解釋型、面向?qū)ο蟆?dòng)態(tài)數(shù)據(jù)類(lèi)型的高級(jí)程序設(shè)計(jì)語(yǔ)言。

Python從設(shè)計(jì)之初就已經(jīng)是一門(mén)面向?qū)ο蟮恼Z(yǔ)言,正因?yàn)槿绱耍赑ython中創(chuàng)建一個(gè)類(lèi)和對(duì)象是很容易的。

python繼承是什么意思?

python繼承:即一個(gè)派生類(lèi)(derived class)繼承基類(lèi)(base class)的字段和方法。繼承也允許把一個(gè)派生類(lèi)的對(duì)象作為一個(gè)基類(lèi)對(duì)象對(duì)待。

例如,有這樣一個(gè)設(shè)計(jì):一個(gè)Dog類(lèi)型的對(duì)象派生自Animal類(lèi),這是模擬"是一個(gè)(is-a)"關(guān)系(例圖,Dog是一個(gè)Animal)。

相關(guān)推薦:《Python教程》以上就是小編分享的關(guān)于python繼承是什么意思的詳細(xì)內(nèi)容希望對(duì)大家有所幫助,更多有關(guān)python教程請(qǐng)關(guān)注環(huán)球青藤其它相關(guān)文章!

python繼承父類(lèi) 怎么引用

子類(lèi)調(diào)用父類(lèi)函數(shù)有以下方法:

直接寫(xiě)類(lèi)名調(diào)用

用 super(type, obj).method(arg)方法調(diào)用。

在類(lèi)定義中調(diào)用本類(lèi)的父類(lèi)方法,可以直接用super().method(arg)

1

2

3

4

5

6

7

8

9

class A:

def method(self, arg):

pass

class B(A):

def method(self, arg):

# A.method(self,arg) # 1

# super(B, self).method(arg) # 2

super().method(arg) # 3

網(wǎng)站名稱:python函數(shù)繼承教程,Python繼承
URL分享:http://chinadenli.net/article47/dsecshj.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)建站公司網(wǎng)站排名用戶體驗(yàn)品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名