# !/usr/bin/env python
# -*- coding:utf-8 -*-
# 1、__len__
class A:
def __init__(self, name, age):
self.name = name
self.age = age
def __len__(self):
print('你使用了 len(对象) ,我被触发啦')
print(self.__dict__)
return len(self.__dict__)
a = A('albert', 17)
# 使用内置函数 len(类的实例对象) 就会触发对象属于的类中的 __len__方法,
print(len(a))
# 2、__str__
class B:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
print('你使用了 str(对象) ,我被触发啦')
return f'姓名:{self.name},年龄:{self.age}'
b1 = B('don', 19)
b2 = B('hugu', 5)
# 如果直接打印对象,得到的是对象的内存地址。
# 但是如果类中实现了 __str__方法,那么在打印 对象 时,就会触发 __str__, 默认输出__str__方法的返回值
# str(类的对象) 也会触发 对象属于的类的 __str__方法
print(b1) # 姓名:don,年龄:19
print(b2)
str(b1)
# 3、__repr__:与__str__类似,但是优先级比 __str__低
print('我的名字:%r' % ('albert')) # 我的名字:'albert'
print('我的名字:%s' % ('albert')) # 我的名字:albert
print(repr('Hello'
Python 特殊的双下划线方法
于 2022-03-05 00:24:47 首次发布