python-类的基本知识
生活随笔
收集整理的這篇文章主要介紹了
python-类的基本知识
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#類的基本知識
#類對象的優點:多態,封裝,繼承#多態
from random import choice
s=['A',"B","C","D"]
ch=choice(s)#從列表中隨機選擇元素,并返回
print(ch)#例:序列中的count函數為多態函數,不管時字符串類型還是列表類型,都可以使用該函數
#很多函數和運算符都是多態的,不需要確定對象的具體類型#封裝:是指向程序中的其他部分隱藏對象的具體實現細節的原則#繼承:子類,超類(基類)
#class語句會在函數定義的地方創建自己的命名空間
_metaclass_=type#確定使用新式類,可以通過type(對象)來查看實例對象所屬的類class People:def getName(self):#self參數為對象自身的引用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參數:方法將它們的參數判定到所屬的實例上,因此無需顯示提供,方法和普通函數可以互相綁定,如下;
def Prints():print("function Prins")
person.Print=Prints#函數綁定不能加括號
person.Print()func=person.Print#通過變量引用類方法,實際上func還是綁定到了對象上,因為該方法訪問了自身#默認情況下,可以在外部訪問對象的特性,可以通過在方法或特性的名字前面加雙下劃線可以變為私有的
class stu:def __getId(self):print("you can't see id!")def Myget(self):self.__getId(self)
st=stu()
st._stu__getId()#實際上雙下劃線被解釋為單下劃線加加類名加私有方法,即這樣可以訪問#from module import *:不會導入前面有下劃線的名字class stuff:num=0#在類的作用域定義了一個可供所用實例訪問的變量def init(self):stuff.num+=1
x=stuff()
x.init()
print(x.num)
y=stuff()
y.init()
print(y.num)
#上述x,y操作了同一個變量,但可以將某個實例的該變量重新綁定到其他值上,而屏蔽類范圍內的變量#超類:在類定義的類名后的圓括號里指定多個該類的超類,子類可以擴展超類的定義
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']))#使用內建函數issubclass(x,y)函數可以查看一個類x是不是另一個類y的子類,返回布爾值
print(issubclass(rect,shape))print(rect.__bases__)#使用__base__或__bases__特性可以查看類的基類print(isinstance(r,rect))#使用函數isinstance(x,y)檢查x是否為類y的(間接)實例,返回布爾值print(r.__class__)#使用__class__特性檢查一個對象屬于哪個類
運行結果:
?
?
總結
以上是生活随笔為你收集整理的python-类的基本知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kubernetes原理浅析
- 下一篇: 牛客网--称砝码