python-类的基本知识
生活随笔
收集整理的這篇文章主要介紹了
python-类的基本知识
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#類的基本知識(shí)
#類對(duì)象的優(yōu)點(diǎn):多態(tài),封裝,繼承#多態(tài)
from random import choice
s=['A',"B","C","D"]
ch=choice(s)#從列表中隨機(jī)選擇元素,并返回
print(ch)#例:序列中的count函數(shù)為多態(tài)函數(shù),不管時(shí)字符串類型還是列表類型,都可以使用該函數(shù)
#很多函數(shù)和運(yùn)算符都是多態(tài)的,不需要確定對(duì)象的具體類型#封裝:是指向程序中的其他部分隱藏對(duì)象的具體實(shí)現(xiàn)細(xì)節(jié)的原則#繼承:子類,超類(基類)
#class語(yǔ)句會(huì)在函數(shù)定義的地方創(chuàng)建自己的命名空間
_metaclass_=type#確定使用新式類,可以通過type(對(duì)象)來查看實(shí)例對(duì)象所屬的類class People:def getName(self):#self參數(shù)為對(duì)象自身的引用return self.namedef setName(self,name):self.name=namedef Print(self):print("Hello world! I'm %s."%self.name)
person=People()
person.setName("Li")
print(person.getName())
person.Print()person.name='Wang'
print(person.getName())
person.Print()#上述self參數(shù):方法將它們的參數(shù)判定到所屬的實(shí)例上,因此無需顯示提供,方法和普通函數(shù)可以互相綁定,如下;
def Prints():print("function Prins")
person.Print=Prints#函數(shù)綁定不能加括號(hào)
person.Print()func=person.Print#通過變量引用類方法,實(shí)際上func還是綁定到了對(duì)象上,因?yàn)樵摲椒ㄔL問了自身#默認(rèn)情況下,可以在外部訪問對(duì)象的特性,可以通過在方法或特性的名字前面加雙下劃線可以變?yōu)樗接械?class stu:def __getId(self):print("you can't see id!")def Myget(self):self.__getId(self)
st=stu()
st._stu__getId()#實(shí)際上雙下劃線被解釋為單下劃線加加類名加私有方法,即這樣可以訪問#from module import *:不會(huì)導(dǎo)入前面有下劃線的名字class stuff:num=0#在類的作用域定義了一個(gè)可供所用實(shí)例訪問的變量def init(self):stuff.num+=1
x=stuff()
x.init()
print(x.num)
y=stuff()
y.init()
print(y.num)
#上述x,y操作了同一個(gè)變量,但可以將某個(gè)實(shí)例的該變量重新綁定到其他值上,而屏蔽類范圍內(nèi)的變量#超類:在類定義的類名后的圓括號(hào)里指定多個(gè)該類的超類,子類可以擴(kuò)展超類的定義
class Others:def Output(x=None):print("others data!")
class shape:def init(self):self.block=[]def getdata(self,data):return [x for x in data if x not in self.block]
class rect(shape,Others):#多重繼承,若shape,Others有同名方法,則shape的方法可用,而Others的該方法被重寫(使其不可訪問)def init(self):self.block=['A']sh=shape()
sh.init()
print(sh.getdata([1,2,3]))r=rect()
r.init()
r.Output()
print(r.getdata(['A','b','c']))#使用內(nèi)建函數(shù)issubclass(x,y)函數(shù)可以查看一個(gè)類x是不是另一個(gè)類y的子類,返回布爾值
print(issubclass(rect,shape))print(rect.__bases__)#使用__base__或__bases__特性可以查看類的基類print(isinstance(r,rect))#使用函數(shù)isinstance(x,y)檢查x是否為類y的(間接)實(shí)例,返回布爾值print(r.__class__)#使用__class__特性檢查一個(gè)對(duì)象屬于哪個(gè)類
運(yùn)行結(jié)果:
?
?
總結(jié)
以上是生活随笔為你收集整理的python-类的基本知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kubernetes原理浅析
- 下一篇: python-迭代器和生成器