我可以在Python中使用两个构造函数方法吗



在Python中,我可以像在Java中那样做一些事情吗?

我想要两个构造函数,一个默认构造函数和一个要求我发送字符串的构造函数。

public class Person
{
String name;
public static void main(String[] args)
{
Person person = new Person("John");
Person person2 = new Person();
}
public Person()
{
name = "No name";
}
public Person(String name)
{
this.name = name;
}
}

在Python中,您不会重载构造函数,但会给name参数一个默认值:

class Person:
def __init__(self, name="No Name"):
self.name = name

在Python中,不能有多个构造函数。唯一的方法是使用这些元素:

  • 关键字参数
  • 具有默认值的可选参数
class Person:
def __init__(self, name="No name"):
self.name = name
if __name__ == '__main__':
p1 = Person()
p2 = Person("John")

没有额外的库帮助来伪造重载函数。Pythonic等价物是定义一个__init__方法和一个使用__init__的附加类方法。例如,

class Person:
def __init__(self, name):
self.name = name
@classmethod
def nameless(cls, self):
return cls("No name")
person = Person("Jhon")
person2 = Person.nameless()

尽管在这种情况下,这对于提供默认参数来说是过分的,可以使用来完成

class Person:
def __init__(self, name="No name"):
self.name = name
person = Person("Jhon")
person2 = Person()

相关内容

  • 没有找到相关文章

最新更新