1. 程式人生 > >python學習筆記(37) 類的內建方法

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__方法,如果沒有會報錯