python构造函数可以有多个吗_python中的多个构造函数,使⽤
继承
⼀个类中不能有两个构造函数.
构造函数必须命名为__init__.并且,与Java不同,Python不允许通过其参数类型重载函数或⽅法.所以,如果你有两个构造函数,它们都是相同的函数.
有⼏种⽅法可以解决这个问题.
使⽤@classmethods作为替代构造函数:
class Breakfast(object):
@classmethod
def from_eggs(cls, eggs):
obj = cls()
obj.spam, s = 5, eggs
return obj
@classmethod
def from_spam_and_eggs(cls, spam, eggs):
obj = cls()
obj.spam, s = spam, eggs
return obj
标准库中的⼀个简单⽰例是datetime.datetime,除了default之外,它还可以使⽤now,fromtimestamp或其他⼀些替代构造函数构造.
使⽤default-valued,keyword-only和/或variable-argument参数来创建可以以不同⽅式调⽤的单个构造函数:
class Breakfast(object):
def __init__(self, eggs=0, spam=5):
self.spam, s = spam, eggs
int就是⼀个例⼦:您可以从字符串和基础创建它,或者从知道如何将⾃⾝转换为整数的单个参数创建它.
创建每个都有不同构造函数的⼦类:
class Breakfast(object):构造函数可以被重载
pass
class HealthyBreakfast(object):
def __init__(self, spam):
self.spam, s = spam, 0
class NormalBreakfast(object):
def __init__(self, spam, eggs):
self.spam, s = spam, eggs
在任何这些情况下,您都可以将共性分解为单个“基础”初始化程序.例如:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论