# 双下方法:
# 1. __str__
# 2. __repr__
class A:
def __str__(self):
return "str_"
def __repr__(self):
return 'repr_'
print(A) # 打印结果:<class '__main__.A'> -- 内存地址
a = A()
print('%s : %s'%(A,a)) # 打印结果:<class '__main__.A'> : str_ # 内存地址 和 str
print(a) # 打印结果:str_
# a.__str__ 找到的时 object
# object 里有一个__str__,一旦被调用,就返回调用这个方法的对象内存地址
# %s __str__
# %r __repr__
# 有 __str__ 方法,返回的一定是字符串
# repr 是 str 的备用
# 如果没有 str 的时候,就会找 repr
# 但是 没有repr 的时候,继续找父类的 str 如果一直找到 object 则,返回的是:内存地址
# 3. __del__
# 在删除某个对象之前,做的一些事
class B:
def __del__(self): # 下面的代码会在 对象 b 删除前调用
print('删除前执行')
b = B()
del b
# print(b) # 报错
# 4. __call__
# 在对象后面加() 可以调用 __call__ 内置方法
class C:
def __call__(self):
print('对象加() 会调用此函数')
c = C()
c() # 打印结果:对象加() 会调用此函数
# 也可以这样写:C()()