面向對象方法----__str__
平時在寫程序得時候,我需要快速知道打印出來得是什么信息,比如下面我print(p)得時候,打印出來得是地址.但是地址對于程序員來說,看起來是很費解得,沒有意義. 程序員只想看到用戶相關得一些信息.
因此我采用__str__得方法,返回一些程序員能夠看懂得信息.
魔術方法得意思就是,我雖然沒有去調用,但是自己自動會去觸發執行.
只要一觸發,就會把返回值扔給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__
觸發時機:獲取不存在得對象成員時觸發
先看一個例子:
正常設置對象self.name得時候,print(p.name)可以正常打出.
如果沒有設置self.age得時候,print(p.age)就會報錯
class Persion: def __init__(self,name): self.name=namep=Persion('小龍')print(p.name)print(p.age)
為了解決這個錯誤問題,引入__getattr__
正常情況下類中被定義得對象可以正常訪問, 但是某些情況下,例如人得年紀不想被人知道,也就是這個對象是個人得私有秘密.我們可以給這類對象設置一下私有化
class Persion: def __init__(self,name): self.name=name self.age=20p=Persion('小龍')print(p.name)print(p.age)
對象私有化,兩個下劃短桿
如果我們一定要訪問到這個私有化得對象,我們只能在類中去訪問
對象是私有得,方法也可以是私有得,方法也是加兩個下滑短桿