__call__方法和可調(diào)用對(duì)象
凡是可以將 () 直接應(yīng)用到自身并執(zhí)行, 都稱為可調(diào)用對(duì)象.
注意:
- 可調(diào)用對(duì)象包括自定義的函數(shù)、Python 內(nèi)置函數(shù)、以及本節(jié)所講的實(shí)例對(duì)象.
 - 
		定義了
__call__()的對(duì)象, 稱為“可調(diào)用對(duì)象”, 即該對(duì)象可以像函數(shù)一樣被調(diào)用. - 該方法使得實(shí)例對(duì)象可以像調(diào)用普通函數(shù)那樣, 以“對(duì)象名()”的形式使用
 
實(shí)操代碼
	deff1():
	print("f1")
	f1()#本質(zhì)上也是調(diào)用了__call__()方法
	classCar:
	def__call__(self,age,money):
	print("調(diào)用__call__()方法")
	print("車齡:{0},金額:{1}".format(age,money))
	f2=Car()
	f2(3,289000)#像函數(shù)那樣調(diào)用,本質(zhì)上也是調(diào)用了__call__()
@property 裝飾器
@property裝飾器相當(dāng)于在Java中實(shí)現(xiàn)了對(duì)屬性的get 方法
注意:
- 
		
@property可以將一個(gè)方法的調(diào)用方式變成“屬性調(diào)用”. - 
		
@property主要用于幫助我們處理屬性的讀操作、寫操作 - 
		對(duì)于某一個(gè)屬性, 我們可以直接通過(guò):
emp1.salary = 30000如上的操作讀操作、寫操作 但是這種做法不安全. 比如, 我需要限制薪水必須為 1-10000 的數(shù)字. 這時(shí)候我們就需要通過(guò)使用裝飾器@property來(lái)處理. 
實(shí)操代碼
	classEmployee:
	def__init__(self,name,salary):
	self.name=name
	self.__salary=salary
	@property#相當(dāng)于salary屬性的getter方法
	defsalary(self):
	print("月薪為{0}, 年薪為{1}".format(self.__salary,12*self.__salary))
	returnself.__salary
	@salary.setter
	defsalary(self,salary):#相當(dāng)于salary屬性的setter方法
	if0
	self.__salary=salary
	else:
	print("薪水錄入錯(cuò)誤!只能在0-1000000之間")
	emp1=Employee("時(shí)間靜止",8848.48)
	print(emp1.salary)
	emp1.salary=12580
	print(emp1.salary)
關(guān)于None和判斷的總結(jié)
None是什么
- 與C和JAVA不同, python中是沒(méi)有 NULL 的, 取而代之的是 None . None 是一個(gè)特殊的常量, 表示變量沒(méi)有指向任何對(duì)象.
 - 在Python中, None 本身實(shí)際上也是對(duì)象, 有自己的類型 NoneType .
 - 你可以將 None 賦值給任何變量, 但我們不能創(chuàng)建 NoneType 類型的對(duì)象
 
實(shí)操代碼
	obj=None
	obj2=None
	print(type(None))
	print(id(None))
	print(id(obj))
	print(id(obj2))
	"""輸出結(jié)果
	'nonetype'>
	140706372487160
	140706372487160
	140706372487160
	"""
None和其他類型的比較
- None不是False, None不是0, None不是空字符串. None和任何其他的數(shù)據(jù)類型比較永遠(yuǎn)返回False
 - if語(yǔ)句判斷時(shí),空列表[]、空字典{}、空元組()、0等一系列代表空和無(wú)的對(duì)象會(huì)被轉(zhuǎn)換成False
 - == 和 is 判斷時(shí), 空列表、空字符串不會(huì)自動(dòng)轉(zhuǎn)成 False
 
實(shí)操代碼
	#None不是False,None不是0,None不是空字符串.None和任何其他的數(shù)據(jù)類型比較永遠(yuǎn)返回False.
	a=None
	ifaisNoneanda==None:
	print("a是None")#會(huì)執(zhí)行
	ifa==Falseora==0:
	print("None不等于False")#不會(huì)被打印
	a=[]
	b=()
	c={}
	d=""
	e=0
	f=None
	#if語(yǔ)句判斷時(shí),空列表[]、空字典{}、空元組()、0等一系列代表空和無(wú)的對(duì)象會(huì)被轉(zhuǎn)換成False
	if(nota)and(notb)and(notc)and(notd)and(note)and(notf):
	print("if判斷時(shí),空列表[]、空字符串、0、None等代表空和無(wú)的對(duì)象會(huì)被轉(zhuǎn)換成False")
	#==和is判斷時(shí),空列表、空字符串不會(huì)自動(dòng)轉(zhuǎn)成False
	ifa==Falseord==False:
	print("==時(shí), 空列表、空字符串不是False!")#不會(huì)執(zhí)行
	if(e==False):
	print("==時(shí),0會(huì)轉(zhuǎn)成False")
- 
                                代碼
                                +關(guān)注
關(guān)注
30文章
4930瀏覽量
72801 - 
                                python
                                +關(guān)注
關(guān)注
56文章
4850瀏覽量
89309 
發(fā)布評(píng)論請(qǐng)先 登錄
Python的面向對(duì)象編程詳解
    
labview面向對(duì)象編程
3分鐘看懂Python面向對(duì)象
面向對(duì)象編程及其三大特性 精選資料分享
談?wù)?b class='flag-5'>面向對(duì)象編程
網(wǎng)絡(luò)講壇:面向對(duì)象的編程(下)-labview視頻教程
這可能是Python面向對(duì)象編程的最佳實(shí)踐
詳談Python的數(shù)據(jù)模型和對(duì)象模型
    
利用Python和PyTorch處理面向對(duì)象的數(shù)據(jù)集
利用 Python 和 PyTorch 處理面向對(duì)象的數(shù)據(jù)集(2)) :創(chuàng)建數(shù)據(jù)集對(duì)象
    
面向過(guò)程與面向對(duì)象的區(qū)別
    
Python中的類和對(duì)象詳解
Python面向對(duì)象深化(上)
    
          
        
        
Python面向?qū)ο笊罨ㄏ拢?/h1>
        
                
 
           
            
            
                
            
評(píng)論