gpt4 book ai didi

python - 是否可以用两种不同的方式实例化一个类的对象?

转载 作者:行者123 更新时间:2023-11-28 23:00:31 25 4
gpt4 key购买 nike

Here是一个将点创建为 p=Point(x, y) 的示例。假设我有一些数组 ppp=(x, y) 其中 xy 是数字,我想将它设为类 Point 但在路上:p=Point(ppp)。我可以用一种或另一种方式做,但不能同时做。是否可以同时拥有这两种方式?

最佳答案

有两种不同的方法来获取结果,第一种是分析您传递给 __init__ 的参数,并根据它们的数量和类型 - 选择一个决定您使用什么来实例化类。

class Point(object):

x = 0
y = 0

def __init__(self, x, y=None):
if y is None:
self.x, self.y = x, x
else:
self.x, self.y = x, y

另一个决定是使用类方法作为实例化器:

class Point(object):

x = 0
y = 0

@classmethod
def from_coords(cls, x, y):
inst = cls()
inst.x = x
inst.y = y
return inst

@classmethod
def from_string(cls, x):
inst = cls()
inst.x, inst.y = x, x
return inst

p1 = Point.from_string('1.2 4.6')
p2 = Point.from_coords(1.2, 4.6)

关于python - 是否可以用两种不同的方式实例化一个类的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11899959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com