面向?qū)ο蠓椒?---__str__
平時(shí)在寫程序得時(shí)候,我需要快速知道打印出來得是什么信息,比如下面我print(p)得時(shí)候,打印出來得是地址.但是地址對于程序員來說,看起來是很費(fèi)解得,沒有意義. 程序員只想看到用戶相關(guān)得一些信息.
因此我采用__str__得方法,返回一些程序員能夠看懂得信息.
魔術(shù)方法得意思就是,我雖然沒有去調(diào)用,但是自己自動(dòng)會去觸發(fā)執(zhí)行.
只要一觸發(fā),就會把返回值扔給print(p)里面去打印
我也可以直接返回名字和年齡
對象之間比較大小
__gt__ great than
__lt__ less than
__eq__ equal
class Student: def __init__(self,name,age): self.name=name self.age=age def __gt__(self, other): return self.age>other.ageS1=Student('小王',20)S2=Student('小李',19)print(S1>S2)
1:__getattr__
觸發(fā)時(shí)機(jī):獲取不存在得對象成員時(shí)觸發(fā)
先看一個(gè)例子:
正常設(shè)置對象self.name得時(shí)候,print(p.name)可以正常打出.
如果沒有設(shè)置self.age得時(shí)候,print(p.age)就會報(bào)錯(cuò)
class Persion: def __init__(self,name): self.name=namep=Persion('小龍')print(p.name)print(p.age)
為了解決這個(gè)錯(cuò)誤問題,引入__getattr__
正常情況下類中被定義得對象可以正常訪問, 但是某些情況下,例如人得年紀(jì)不想被人知道,也就是這個(gè)對象是個(gè)人得私有秘密.我們可以給這類對象設(shè)置一下私有化
class Persion: def __init__(self,name): self.name=name self.age=20p=Persion('小龍')print(p.name)print(p.age)
對象私有化,兩個(gè)下劃短桿
如果我們一定要訪問到這個(gè)私有化得對象,我們只能在類中去訪問
對象是私有得,方法也可以是私有得,方法也是加兩個(gè)下滑短桿