當我們在類中定義方法的時候,總會看到會第一個參數總是self,是的這個是python的一個語法,他相當於這個對象的指針。
class Dog(): def setName(self,name): self.name = name def callName(self): print("hello",self.name) #-----------------輸出 >>> d = Dog() >>> t = Dog() >>> d.setName("didi") >>> t.setName("tonny") >>> d.callName() hello didi >>> t.callName() hello tonny >>>
構造函數__init__(self,param[,param...]),當我們在初始化的時候需要給類內部某些變量進行賦值的時候可以用到
class Cat(): name="tom" def __init__(self,name): print("未給定初始值的名字:",self.name) self.name = name print("名字:",self.name) #當我們不給予初始值的時候會報錯 >>> c = Cat() Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> c = Cat() TypeError: __init__() missing 1 required positional argument: 'name' #當我們給予初始值的時候。 >>> c = Cat("jerry") 未給定初始值的名字: tom #由於默認是tom,所以第一次輸出時就是tom 名字: jerry >>>
__private(私有變量),在Python中一般我們聲明的都是公共屬性,但是有時候要設置一個屬性或者方法為私有方法的時候那么可以通過在屬性名稱前加兩個_來進行聲明,這樣這個私有屬性在外部就訪問不到了。如:
class Cat(): name="tom" #共有屬性 __no = "001" #私有屬性 def __init__(self,name): print("未給定初始值的名字:",self.name) self.name = name print("名字:",self.name) print("編號:",self.__no) #初始化對象 >>> c =Cat("jerry") 未給定初始值的名字: tom 名字: jerry 編號: 001 #當我們試圖調用私有屬性的時候會報錯 >>> c.__no Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> c.__no AttributeError: 'Cat' object has no attribute '__no' #當我們調用共有屬性的時候直接就成功了 >>> c.name 'jerry' >>>
但是需要注意的是,在python中私有其實也只能說是“偽私有”,因為我們還是可以通過另一種方式進行訪問,也許您已經猜到了:
#通過_Cat__no就可以訪問到這個私有方法 >>> c._Cat__no '001' >>>
