python 创建多个构造方法
时间: 2023-12-31 14:03:50 浏览: 24
Python中并不支持创建多个构造方法,但可以通过定义类方法或静态方法来实现类似的功能。
1. 使用类方法
类方法使用@classmethod装饰器定义,第一个参数为cls,表示类本身,可以通过cls调用类的属性和方法。
示例代码:
```
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_birth_year(cls, name, birth_year):
age = datetime.date.today().year - birth_year
return cls(name, age)
@classmethod
def from_dict(cls, dict_obj):
return cls(dict_obj['name'], dict_obj['age'])
```
使用类方法创建对象:
```
person1 = Person('Tom', 20)
person2 = Person.from_birth_year('Jack', 2000)
person3 = Person.from_dict({'name': 'Lucy', 'age': 25})
```
2. 使用静态方法
静态方法使用@staticmethod装饰器定义,可以直接通过类名调用,与类本身无关。
示例代码:
```
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@staticmethod
def from_birth_year(name, birth_year):
age = datetime.date.today().year - birth_year
return Person(name, age)
@staticmethod
def from_dict(dict_obj):
return Person(dict_obj['name'], dict_obj['age'])
```
使用静态方法创建对象:
```
person1 = Person('Tom', 20)
person2 = Person.from_birth_year('Jack', 2000)
person3 = Person.from_dict({'name': 'Lucy', 'age': 25})
```