在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()