继续前面的例子:http://blog.51cto.com/lavenliu/2126344
看前面的复数的例子,这里增加__str__
属性,
class Complex:
def __init__(self, real, imag):
self.real = read
self.imag = imag
def __add__(self, other):
return Complex(self.real + other.real, self.imag + other.imag)
def __sub__(self, other):
return Complex(self.real - other.read, self.imag - other.imag)
def __str__(self):
if self.imag >= 0:
return ‘{} + {}i‘.format(self.real, self.imag)
return ‘{} - {}i‘.format(self.real, self.imag * -1)
def __repr__(self):
return ‘<{}.{}({}, {}) at {}>‘.format(self.__module__, self.__class__.__name__, self.real, self.imag, hex(id(self)))
c1 = Complex(1, 2)
c1.real
c1.imag
c1 # 这里的输出也可以定制,增加__repr__方法
‘{}‘.format(c1)
str(c) # str调用对象的__str__方法。__str__要返回一个字符串。
两个可视化方法,__str__
及__repr__
方法。它们的区别与联系是:
- 相同点
- 都要求返回字符串
- 不同点
__str__
返回的字符串更接近自然语言;__repr__
返回的字符串更多的反映解释器相关的;- 以上只是个约定而已;
原文地址:http://blog.51cto.com/lavenliu/2128173
时间: 2024-10-11 19:51:26