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__方法,如果没有会报错

猜你喜欢

转载自www.cnblogs.com/farion/p/9932469.html