日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python获取url参数 类继承_python之类的继承

發布時間:2025/10/17 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python获取url参数 类继承_python之类的继承 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在繼承當中我們將父類稱為:父類,基類,超類

將子類稱為:子類,派生類,繼承類

子類和父類是is的關系。

假如:p1是父類的一個實例,我們可以說p1是父類,但是不能說是子類。

p2是子類的一個實例,我們能說p2是子類,也能說p2是父類。

>>> classPerson(object):def __init__(self,name,gnder):

self.name=name

self.gender=gender>>> classStudent(Person):def __init__(self,name,gender,school,score):

super(Student,self).__init__(name,gender)

self.school=school

self.score= score

這里面就是Student從Person父類繼承了,這里要注意的是

super(Student,self).__init__(name,gender)是一個用來初始化父類的語句

————————————————————————————————————————————————————

判斷類型:

函數isinstance()可以判斷一個變量的類型,既可以用在Python內置的數據類型如str、list、dict,也可以用在我們自定義的類,它們本質上都是數據類型。

>>> classPerson(object):def __init__(self,name,gender):

self.name=name

self.gender=gender>>> classStudent(Person):def __init__(self,name,gender,score):

super(Student,self).__init__(name,gender)

self.score=score>>> classTeacher(Person):def __init__(self,name,gender,course):

super(Teacher,self).__init__(name,gender)

self.course=course>>> p = Person('Tim','Male')>>> s = Student('Bob','Male',88)>>> t = Teacher('Alice','Female','English')>>>isinstance(s,Person)

True>>>isinstance(s,Student)

True>>>isinstance(s,Teacher)

False

從上面的返回結果可以看出,s屬于person類和student類,但是不屬于teahcer類。

——————————————————————————————————————————

多態性:

>>> classPerson(object):def __init__(self,name,gender):

self.name=name

self.gender=gender>>> classPerson(object):def __init__(self,name,gender):

self.name=name

self.gender=genderdefwhoAmI(self):return 'I am a Person,my name is %s' %self.name>>> classStudent(Person):def __init__(self,name,gender,score):

super(Student,self).__init__(name,gender)

self.score=scoredefwhoAmI(self):return 'I am a Student,my name is %s' %self.name>>> classTeacher(Person):def __init__(self,name,gender,course):

super(Teacher,self).__init__(name,gender)

self.course=coursedefwhoAmI(self):return'I am a Teacher,my name is %s'%self.name>>> defwho_am_i(x):printx.whoAmI()

SyntaxError: invalid syntax>>> defwho_am_i(x):print(x.whoAmI())>>> p = Person('Tim','Male')>>> s = Student('Bob','Male',88)>>> t = Teacher('Alice','Female','English')>>>who_am_i(p)

I am a Person,my nameisTim>>>who_am_i(s)

I am a Student,my nameisBob>>>who_am_i(t)

I am a Teacher,my nameis Alice

這種行為稱為多態。也就是說,方法調用將作用在?x?的實際類型上。s?是Student類型,它實際上擁有自己的whoAmI()方法以及從 Person繼承的 whoAmI方法,但調用?s.whoAmI()總是先查找它自身的定義,如果沒有定義,則順著繼承鏈向上查找,直到在某個父類中找到為止。

由于Python是動態語言,所以,傳遞給函數?who_am_i(x)的參數?x不一定是 Person 或 Person 的子類型。任何數據類型的實例都可以,只要它有一個whoAmI()的方法即可:

這是動態語言和靜態語言(例如Java)最大的差別之一。動態語言調用實例方法,不檢查類型,只要方法存在,參數正確,就可以調用。

——————————————————————————————————————————————————————————————————

多重繼承:

子類可以從多個父類繼承。

>>> classA(object):def __init__(self,a):print ('init A...')

self.a=a>>> classB(A):def __init__(self,a):

super(B,self).__init__(a)print ('init B...')>>> classC(A):def __init__(self,a):

super(C,self).__init__(a)print('init C...')>>> classD(B,C):def __init__(self,a):

super(D,self).__init__(a)print ('init D...')>>> d = D('d')

init A...

init C...

init B...

init D...

多重繼承的目的是從兩種繼承樹中分別選擇并繼承出子類,以便組合功能使用。

舉個例子,Python的網絡服務器有TCPServer、UDPServer、UnixStreamServer、UnixDatagramServer,而服務器運行模式有?多進程ForkingMixin和?多線程ThreadingMixin兩種。

要創建多進程模式的TCPServer:

classMyTCPServer(TCPServer, ForkingMixin)pass

要創建多線程模式的UDPServer:

classMyUDPServer(UDPServer, ThreadingMixin):pass

如果沒有多重繼承,要實現上述所有可能的組合需要 4x2=8 個子類。

————————————————————————————————————————————————

獲取對象信息:

我們獲取對象信息除了isinstance()之外還有type():

>>> classD(B,C):def __init__(self,a):

super(D,self).__init__(a)print ('init D...')>>> d = D('d')

init A...

init C...

init B...

init D...>>> type(123)

>>>type(d)

其次,可以用?dir()函數獲取變量的所有屬性:

>>> dir(123)

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']>>>dir(d)

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'a']

dir()返回的屬性是字符串列表,如果已知一個屬性名稱,要獲取或者設置對象的屬性,就需要用?getattr()和setattr( )函數了:

>>> classStudent(object):def __init__(self,name):

self.name=name>>> a = Student('Dean')>>> getattr(a,'name')'Dean'

>>> setattr(a,'name','Adam')>>>a.name'Adam'

>>> getattr(a,'age') #獲取age屬性,但是屬性不存在,報錯:

Traceback (most recent call last):

File"", line 1, in getattr(a,'age') #獲取age屬性,但是屬性不存在,報錯:

AttributeError: 'Student' object has no attribute 'age'

>>> getattr(s, 'age', 20) #獲取age屬性,如果屬性不存在,就返回默認值20:

20

總結

以上是生活随笔為你收集整理的python获取url参数 类继承_python之类的继承的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。