欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

python函數(shù)類的繼承 python類和繼承

python ssti之繼承鏈利用

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

創(chuàng)新互聯(lián)主營(yíng)漳浦網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,漳浦h5小程序設(shè)計(jì)搭建,漳浦網(wǎng)站營(yíng)銷推廣歡迎漳浦等地區(qū)企業(yè)咨詢

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

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

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

in python2 func.func_globals is func.__globals__

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

python2中形如

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

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

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

返回索引為index的值。

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

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

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

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

過(guò)濾了括號(hào),沒(méi)法用__subclassess__獲取子類,并且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類的繼承與多態(tài)詳細(xì)介紹

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

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

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

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

類調(diào)用 Car.weight

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

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

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

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

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

主函數(shù) :

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

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

python類的繼承和單例模式 singleton、運(yùn)算符重載

@[toc]

全局只有一個(gè)實(shí)例

font color=#03a3e3 該實(shí)現(xiàn)方式在多線程場(chǎng)景下不安全

繼承其他類的類稱為派生類(derived class)

被其他類繼承的類稱為這些類的基類(base

class)

需要注意圓括號(hào)中基類的順序:font color=#03a3e3 從左到右搜索 font

多繼承會(huì)導(dǎo)致菱形 diamond關(guān)系:有至少一個(gè)基類可以從子類經(jīng)由多個(gè)繼承路徑到達(dá)

基類方法可能被多次調(diào)用

防止重復(fù)訪問(wèn),每個(gè)基類只調(diào)用一次

通過(guò)子類實(shí)例對(duì)象課調(diào)用父類已被覆蓋

慎用多繼承(二義性)

– 對(duì)已有的運(yùn)算符重新進(jìn)行定義,賦予其另一種功能,以適應(yīng)不同的數(shù)據(jù)類型

– 運(yùn)算符重載不能改變其本來(lái)寓意

– 運(yùn)算符重載只是一種 “語(yǔ)法上的方便” (sugar)

– 是一種函數(shù)調(diào)用的方式

核心解密Python函數(shù)在(類與函數(shù)之間)和(類與類之間)互相調(diào)用

首先來(lái)看一個(gè)函數(shù)間的調(diào)用

類方法:

執(zhí)行結(jié)果:

metaclass能有什么用處,先來(lái)個(gè)感性的認(rèn)識(shí):

1.1 在wiki上面,metaclass是這樣定義的:In object-oriented programming,

a metaclass is a class whose instances are classes.

Just as an ordinary class defines the behavior of certain objects,

a metaclass defines the behavior of certain classes and their instances.

也就是說(shuō)metaclass的實(shí)例化結(jié)果是類,而class實(shí)例化的結(jié)果是instance。我是這么理解的:

metaclass是類似創(chuàng)建類的模板,所有的類都是通過(guò)他來(lái)create的(調(diào)用 new ),這使得你可以自由的控制

創(chuàng)建類的那個(gè)過(guò)程,實(shí)現(xiàn)你所需要的功能。

當(dāng)然你也可以用函數(shù)的方式(下文會(huì)講)

4.1 用類的形式

4.1.1 類繼承于type, 例如: class Meta(type):pass

4.1.2 將需要使用metaclass來(lái)構(gòu)建class的類的 metaclass 屬性(不需要顯示聲明,直接有的了)賦值為Meta(繼承于type的類)

4.2 用函數(shù)的形式

4.2.1 構(gòu)建一個(gè)函數(shù),例如叫metaclass_new, 需要3個(gè)參數(shù):name, bases, attrs,

name: 類的名字

bases: 基類,通常是tuple類型

attrs: dict類型,就是類的屬性或者函數(shù)

4.2.2 將需要使用metaclass來(lái)構(gòu)建class的類的 metaclass 屬性(不需要顯示聲明,直接有的了)賦值為函數(shù)metaclas_new

5.1 basic

metaclass的原理其實(shí)是這樣的:當(dāng)定義好類之后,創(chuàng)建類的時(shí)候其實(shí)是調(diào)用了type的 new 方法為這個(gè)類分配內(nèi)存空間,創(chuàng)建

好了之后再調(diào)用type的 init 方法初始化(做一些賦值等)。所以metaclass的所有magic其實(shí)就在于這個(gè) new 方法里面了。

說(shuō)說(shuō)這個(gè)方法: new (cls, name, bases, attrs)

cls: 將要?jiǎng)?chuàng)建的類,類似與self,但是self指向的是instance,而這里cls指向的是class

name: 類的名字,也就是我們通常用類名. name 獲取的。

bases: 基類

attrs: 屬性的dict。dict的內(nèi)容可以是變量(類屬性),也可以是函數(shù)(類方法)。

所以在創(chuàng)建類的過(guò)程,我們可以在這個(gè)函數(shù)里面修改name,bases,attrs的值來(lái)自由的達(dá)到我們的功能。這里常用的配合方法是

getattr和setattr(just an advice)

下面實(shí)現(xiàn)python中在一個(gè)類中調(diào)用另一個(gè)類的函數(shù)方法

或者下面來(lái)一個(gè)號(hào)理解的例子

執(zhí)行結(jié)果:

先來(lái)介紹內(nèi)部類與外部類是什么?

看源碼解析:

內(nèi)部類調(diào)用外部類的類屬性和類方法

參考文獻(xiàn)1

參考文獻(xiàn)2

參考文獻(xiàn)3

Python面向?qū)ο缶幊讨^承與多態(tài)詳解

Python面向?qū)ο缶幊讨^承與多態(tài)詳解

本文實(shí)例講述了Python面向?qū)ο缶幊讨^承與多態(tài)。分享給大家供大家參考,具體如下:

Python 類的繼承

在OOP(Object Oriented Programming)程序設(shè)計(jì)中,當(dāng)我們定義一個(gè)class的時(shí)候,可以從某個(gè)現(xiàn)有的class 繼承,新的class稱為子類(Subclass),而被繼承的class稱為基類、父類或超類(Base class、Super class)。

我們先來(lái)定義一個(gè)class Person,表示人,定義屬性變量 name 及 sex (姓名和性別);

定義一個(gè)方法print_title():當(dāng)sex是male時(shí),print man;當(dāng)sex 是female時(shí),print woman。參考如下代碼:

class Person(object):

def __init__(self,name,sex):

self.name = name

self.sex = sex

def print_title(self):

if self.sex == "male":

print("man")

elif self.sex == "female":

print("woman")

class Child(Person): # Child 繼承 Person

pass

May = Child("May","female")

Peter = Person("Peter","male")

print(May.name,May.sex,Peter.name,Peter.sex) # 子類繼承父類方法及屬性

May.print_title()

Peter.print_title()

而我們編寫 Child 類,完全可以繼承 Person 類(Child 就是 Person);使用 class subclass_name(baseclass_name) 來(lái)表示繼承;

繼承有什么好處?最大的好處是子類獲得了父類的全部屬性及功能。如下 Child 類就可以直接使用父類的 print_title() 方法

實(shí)例化Child的時(shí)候,子類繼承了父類的構(gòu)造函數(shù),就需要提供父類Person要求的兩個(gè)屬性變量 name 及 sex:

在繼承關(guān)系中,如果一個(gè)實(shí)例的數(shù)據(jù)類型是某個(gè)子類,那它也可以被看做是父類(May 既是 Child 又是 Person)。但是,反過(guò)來(lái)就不行(Peter 僅是 Person,而不是Child)。

繼承還可以一級(jí)一級(jí)地繼承下來(lái),就好比從爺爺?shù)桨职帧⒃俚絻鹤舆@樣的關(guān)系。而任何類,最終都可以追溯到根類object,這些繼承關(guān)系看上去就像一顆倒著的樹。比如如下的繼承樹:

isinstance() 及 issubclass()

Python 與其他語(yǔ)言不同點(diǎn)在于,當(dāng)我們定義一個(gè) class 的時(shí)候,我們實(shí)際上就定義了一種數(shù)據(jù)類型。我們定義的數(shù)據(jù)類型和Python自帶的數(shù)據(jù)類型,比如str、list、dict沒(méi)什么兩樣。

Python 有兩個(gè)判斷繼承的函數(shù):isinstance() 用于檢查實(shí)例類型;issubclass() 用于檢查類繼承。參見(jiàn)下方示例:

class Person(object):

pass

class Child(Person): # Child 繼承 Person

pass

May = Child()

Peter = Person()

print(isinstance(May,Child)) # True

print(isinstance(May,Person)) # True

print(isinstance(Peter,Child)) # False

print(isinstance(Peter,Person)) # True

print(issubclass(Child,Person)) # True

Python 類的多態(tài)

在說(shuō)明多態(tài)是什么之前,我們?cè)?Child 類中重寫 print_title() 方法:若為male,print boy;若為female,print girl

class Person(object):

def __init__(self,name,sex):

self.name = name

self.sex = sex

def print_title(self):

if self.sex == "male":

print("man")

elif self.sex == "female":

print("woman")

class Child(Person): # Child 繼承 Person

def print_title(self):

if self.sex == "male":

print("boy")

elif self.sex == "female":

print("girl")

May = Child("May","female")

Peter = Person("Peter","male")

print(May.name,May.sex,Peter.name,Peter.sex)

May.print_title()

Peter.print_title()

當(dāng)子類和父類都存在相同的 print_title()方法時(shí),子類的 print_title() 覆蓋了父類的 print_title(),在代碼運(yùn)行時(shí),會(huì)調(diào)用子類的 print_title()

這樣,我們就獲得了繼承的另一個(gè)好處:多態(tài)。

多態(tài)的好處就是,當(dāng)我們需要傳入更多的子類,例如新增 Teenagers、Grownups 等時(shí),我們只需要繼承 Person 類型就可以了,而print_title()方法既可以直不重寫(即使用Person的),也可以重寫一個(gè)特有的。這就是多態(tài)的意思。調(diào)用方只管調(diào)用,不管細(xì)節(jié),而當(dāng)我們新增一種Person的子類時(shí),只要確保新方法編寫正確,而不用管原來(lái)的代碼。這就是著名的“開閉”原則:

對(duì)擴(kuò)展開放(Open for extension):允許子類重寫方法函數(shù)

對(duì)修改封閉(Closed for modification):不重寫,直接繼承父類方法函數(shù)

子類重寫構(gòu)造函數(shù)

子類可以沒(méi)有構(gòu)造函數(shù),表示同父類構(gòu)造一致;子類也可重寫構(gòu)造函數(shù);現(xiàn)在,我們需要在子類 Child 中新增兩個(gè)屬性變量:mother 和 father,我們可以構(gòu)造如下(建議子類調(diào)用父類的構(gòu)造方法,參見(jiàn)后續(xù)代碼):

class Person(object):

def __init__(self,name,sex):

self.name = name

self.sex = sex

class Child(Person): # Child 繼承 Person

def __init__(self,name,sex,mother,father):

self.name = name

self.sex = sex

self.mother = mother

self.father = father

May = Child("May","female","April","June")

print(May.name,May.sex,May.mother,May.father)

若父類構(gòu)造函數(shù)包含很多屬性,子類僅需新增1、2個(gè),會(huì)有不少冗余的代碼,這邊,子類可對(duì)父類的構(gòu)造方法進(jìn)行調(diào)用,參考如下:

class Person(object):

def __init__(self,name,sex):

self.name = name

self.sex = sex

class Child(Person): # Child 繼承 Person

def __init__(self,name,sex,mother,father):

Person.__init__(self,name,sex) # 子類對(duì)父類的構(gòu)造方法的調(diào)用

self.mother = mother

self.father = father

May = Child("May","female","April","June")

print(May.name,May.sex,May.mother,May.father)

多重繼承

多重繼承的概念應(yīng)該比較好理解,比如現(xiàn)在需要新建一個(gè)類 baby 繼承 Child , 可繼承父類及父類上層類的屬性及方法,優(yōu)先使用層類近的方法,代碼參考如下:

class Person(object):

def __init__(self,name,sex):

self.name = name

self.sex = sex

def print_title(self):

if self.sex == "male":

print("man")

elif self.sex == "female":

print("woman")

class Child(Person):

pass

class Baby(Child):

pass

May = Baby("May","female") # 繼承上上層父類的屬性

print(May.name,May.sex)

May.print_title() # 可使用上上層父類的方法

class Child(Person):

def print_title(self):

if self.sex == "male":

print("boy")

elif self.sex == "female":

print("girl")

class Baby(Child):

pass

May = Baby("May","female")

May.print_title() # 優(yōu)先使用上層類的方法

pythonclass.function的父類是什么

在對(duì)于python中類的使用上,我們分出了子類和父類兩種。對(duì)于這二者之間的關(guān)系,我們可以簡(jiǎn)單理解為繼承。不過(guò)python中加入了實(shí)例的討論,那么對(duì)于繼承后的子類來(lái)說(shuō),父類的實(shí)例是否被繼承又是我們所需要思考的問(wèn)題。下面我們就子類和父類進(jìn)行簡(jiǎn)單介紹,然后就二者之間的繼承關(guān)系重點(diǎn)分析。

1.概念

子類和父類主要描述的是類之間的繼承關(guān)系,即所屬關(guān)系。繼承的類可在被繼承的類的基礎(chǔ)上添加格外的參數(shù)和行為,新類稱為子類,擴(kuò)展類;被繼承的類稱為基類、父類或者超類。

2.繼承關(guān)系

子類與父類的關(guān)系是 “is” 的關(guān)系,如上 Cat 繼承于 Animal 類,我們可以說(shuō):

“A”是 Animal 類的實(shí)例,但,“A”不是 Cat 類的實(shí)例。

“C”是 Animal 類的實(shí)例,“C”也是 Cat 類的實(shí)例。

判斷對(duì)象之間的關(guān)系,我們可以通過(guò) isinstance (變量,類型) 來(lái)進(jìn)行判斷:

print('"A" IS Animal?', isinstance(A, Animal))

print('"A" IS Cat?', isinstance(A, Cat))

print('"C" IS Animal?', isinstance(C, Animal))

print('"C" IS Cat?', isinstance(C, Cat))

Python實(shí)現(xiàn)子類調(diào)用父類的方法

python和其他面向?qū)ο笳Z(yǔ)言類似,每個(gè)類可以擁有一個(gè)或者多個(gè)父類,它們從父類那里繼承了屬性和方法。如果一個(gè)方法在子類的實(shí)例中被調(diào)用,或者一個(gè)屬性在子類的實(shí)例中被訪問(wèn),但是該方法或?qū)傩栽谧宇愔胁⒉淮嬖冢敲淳蜁?huì)自動(dòng)的去其父類中進(jìn)行查找。

繼承父類后,就能調(diào)用父類方法和訪問(wèn)父類屬性,而要完成整個(gè)集成過(guò)程,子類是需要調(diào)用的構(gòu)造函數(shù)的。

子類不顯式調(diào)用父類的構(gòu)造方法,而父類構(gòu)造函數(shù)初始化了一些屬性,就會(huì)出現(xiàn)問(wèn)題

如果子類和父類都有構(gòu)造函數(shù),子類其實(shí)是重寫了父類的構(gòu)造函數(shù),如果不顯式調(diào)用父類構(gòu)造函數(shù),父類的構(gòu)造函數(shù)就不會(huì)被執(zhí)行,導(dǎo)致子類實(shí)例訪問(wèn)父類初始化方法中初始的變量就會(huì)出現(xiàn)問(wèn)題。

分享文章:python函數(shù)類的繼承 python類和繼承
網(wǎng)頁(yè)URL:http://aaarwkj.com/article32/doodpsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化網(wǎng)站內(nèi)鏈、用戶體驗(yàn)外貿(mào)網(wǎng)站建設(shè)、ChatGPT

廣告

聲明:本網(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)

營(yíng)銷型網(wǎng)站建設(shè)
99精品欧美日韩在线播放| 97全国免费观看视频| 亚洲伊人成综合人影院| 国产免费一区二区福利| 久久国产精品午夜亚洲欧美| 在线成人影院中文字幕| 亚洲欧美成人自偷自拍一区| 日本姜女黄视频免费看| 91麻豆精品一二三区在线| 久久精品成人无码观看56| 亚洲ve中文字幕久久一区二区| 精品人妻少妇一区二区三| 国产精品18禁一区二区三区| 国产国产乱老熟视频网站| 最新国产不卡一区二区| 欧美日韩精品一区二区在线| 久久精品有码视频免费观看| 亚洲区一区二区三区精品 | 欧美性极品少妇精品网站| 久久婷婷国产综合精品青草| 亚洲欧美综合日韩综合久久久| 亚洲成人日韩成人av| 日本一区二区中文字幕视频| 日韩黄色一级免费在线观看| 97视频在线观看网站| 91福利社区欧美大片| 欧美中文字幕在线精品| 欧美日韩一区二区三区色拉拉| 欧美日韩在线一区二区| 成年人午夜看片免费网站| 你懂的免费视频中文字幕| 韩日av一区二区三区| 九九99九九99九九精品在线观看| 欧美成人精品午夜一区二区| 国产精品三级竹菊影视| 亚洲码欧美码一区二区三区| 少妇内射呻吟中文字幕视频| 外国男人搞亚洲女人在线| 国产三级精品三级在线播放| 中文字幕人妻熟女在线| 午夜福利成人在线免费观看|