备选构造方法,@classmethod 装饰器经常这么用。常见场景
时间: 2023-07-11 20:51:40 浏览: 139
python类装饰器用法实例
@classmethod 装饰器经常用来为一个类定义备选的构造方法。常见的场景是,有时候我们需要使用不同的方式去实例化一个类,比如从一个文件中读取数据,或者从一个字符串中解析数据等。在这种情况下,我们可以定义一个备选的构造方法,并使用 @classmethod 装饰器来标记它。这样,当我们调用这个备选构造方法时,Python 解释器会自动把类本身传递给这个方法,使得我们可以在这个方法中调用类的其他方法或属性。例如:
```python
class MyClass:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
@classmethod
def from_file(cls, filename):
with open(filename, 'r') as f:
arg1, arg2 = f.readline().strip().split(',')
return cls(arg1, arg2)
```
在这个例子中,我们定义了一个备选构造方法 from_file,它从一个文件中读取数据,并使用这些数据来实例化一个 MyClass 对象。在这个方法中,我们使用 cls 参数来代替 MyClass 类本身,以便可以在方法内部使用类的其他方法或属性。当我们调用这个方法时,Python 解释器会自动把 MyClass 类传递给 from_file 方法,使得我们可以通过 cls 参数来调用 MyClass 的构造方法。
阅读全文