Python中的定制类
时间: 2024-03-21 20:34:03 浏览: 18
Python中的定制类是指可以通过特殊的函数来定制类的行为,使其表现得像内置类型一样。以下是一些常用的特殊函数:
1. `__str__(self)`:用于将对象转换为字符串,方便打印和输出。
2. `__repr__(self)`:用于将对象转换为供解释器读取的形式,通常用于调试。
3. `__len__(self)`:用于返回对象的长度,可以用于自定义容器类型。
4. `__getitem__(self, key)`:用于获取对象的某个元素,可以用于自定义容器类型。
5. `__setitem__(self, key, value)`:用于设置对象的某个元素,可以用于自定义容器类型。
6. `__getattr__(self, name)`:用于获取对象的某个属性,可以用于实现“虚拟属性”。
下面是一个例子,演示了如何通过特殊函数来定制一个类:
```python
class MyList:
def __init__(self, *args):
self.data = list(args)
def __str__(self):
return str(self.data)
def __repr__(self):
return 'MyList(' + ', '.join(map(repr, self.data)) + ')'
def __len__(self):
return len(self.data)
def __getitem__(self, index):
return self.data[index]
def __setitem__(self, index, value):
self.data[index] = value
def __getattr__(self, name):
if name == 'reverse':
return self.data[::-1]
else:
raise AttributeError('no such attribute')
```
上面的代码定义了一个名为`MyList`的类,它可以像内置的`list`一样使用。我们可以创建一个`MyList`对象,并对其进行操作:
```python
>>> a = MyList(1, 2, 3)
>>> print(a)
[1, 2, 3]
>>> a[1] = 4
>>> print(a)
[1, 4, 3]
>>> print(len(a))
3
>>> print(repr(a))
MyList(1, 4, 3)
>>> print(a.reverse)
[3, 4, 1]
>>> print(a.sort)
AttributeError: no such attribute
```