Python空构造函数

Nar*_*yan 11 python default initialization

有没有办法在python中创建一个空构造函数.我有一节课:

class Point:
    def __init__(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z
Run Code Online (Sandbox Code Playgroud)

现在我像这样初始化它:

p = Point(0, 5, 10)
Run Code Online (Sandbox Code Playgroud)

如何创建一个空构造函数并像这样初始化它:

p = Point()
Run Code Online (Sandbox Code Playgroud)

小智 18

class Point:
    def __init__(self):
        pass
Run Code Online (Sandbox Code Playgroud)

  • 但这不能与当前的实现共存。仅保留具有该名称的一种方法。 (2认同)
  • 尽管此代码可以回答问题,但提供有关如何和/或为什么解决问题的其他上下文将提高​​答案的长期价值。 (2认同)

Shr*_*yak 14

正如@jonrsharpe在评论中所说,你可以使用默认参数.

class Point:
    def __init__(self, x=0, y=0, z=0):
        self.x = x
        self.y = y
        self.z = z
Run Code Online (Sandbox Code Playgroud)

现在你可以打电话了 Point()


Wil*_*all 12

您可以通过以稍微不同的方式构造类来实现您想要的结果。

class Point:
    def __init__(self):
        pass

    def setvalues(self, x, y, z):
        self.x = x
        self.y = y
        self.z = z
    
Run Code Online (Sandbox Code Playgroud)


小智 8

您应该使用可选参数定义类的__init__()方法Point

在您的情况下,这应该有效:

class Point:
    def __init__(self, x=0, y=0, z=0):
        self.x = x
        self.y = y
        self.z = z

pointA = Point(0, 5, 10)
print("pointA: x={}, y={}, z={}".format(pointA.x, pointA.y, pointA.z))
# print "pointA: x=0, y=5, z=10"

pointB = Point()
print("pointB: x={}, y={}, z={}".format(pointB.x, pointB.y, pointB.z))
# print "pointB: x=0, y=0, z=0"
Run Code Online (Sandbox Code Playgroud)