python 自定义__format__例程
时间: 2024-10-19 09:02:43 浏览: 4
在Python中,如果你想要自定义对象的字符串表示形式,可以通过重写`__format__(self, format_spec)`方法来实现。`format_spec`是你传递给`format()`或`str.format()`等格式化方法的字符串,它包含了格式化选项。
例如,如果你有一个名为`Person`的类,代表一个人有姓名和年龄,你可能会这样做:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __format__(self, format_spec):
if format_spec == 'full':
return f'{self.name}, {self.age} years old'
elif format_spec.startswith('age'):
return str(self.age)
else:
raise ValueError(f"Unsupported format specification: {format_spec}")
# 使用示例
person = Person("Alice", 25)
print(person.format('full')) # 输出: Alice, 25 years old
print(person.format('age')) # 输出: 25
```
在这个例子中,`__format__`根据`format_spec`的不同值返回不同的格式化结果。如果`format_spec`未提供或者不被理解,会抛出`ValueError`。
阅读全文