python學習筆記(37) 類的內建方法
內建的類方法和內建函式之間關係緊密
__str__ #一定return一個字串
class A:
def __str__(self):
return "A's object"
a = A()
print(str(a)) #object裡有一個__str__,一旦呼叫,返回呼叫這個方法的物件的記憶體地址
print(a) #A's object列印物件的時候就是呼叫這個物件的a.__str__方法
%s str() print實際上都是呼叫__str__方法,必定返回字串資料型別
###############################################
def __str__(self)
return "Teacher's object : %s"%self.name
###############################################
__repr__
print(repr(1)) #1
print(repr('1')) #'1'
print(1,'1') #1 1
\是取消轉義\\n
###############################################
%r和repr()走的都是__repr__方法
def __repr__(self):
return str(self.__dict__)
print(repr(a))
print('%r'%a) #結果同上,列印字典
repr是str的備胎,反之不行(沒有__str__會呼叫__repr__)
如果只能實現一個,那麼優先實現repr方法
##############################################
內建方法有很多,不一定全都在object中,所有物件都有的屬性才會被object收錄
比如__len__
def __len__(self):
return len(self.student)
例項化後呼叫len()返回班級學生數量
##################################################
class A:
def __del__(self): #解構函式:在刪除一個物件之前,進行一些收尾工作,比如關閉檔案
print('刪掉啦!')
a = A()
del a
print(a) #既執行了這個方法,又刪除了變數,引用計數為1,為0的時候自動刪除a
##################################################
class A:
def __call__(self):
print('執行我啦!')
a = A()()
a() #相當於執行了__call__方法,如果沒有會報錯