Это действительно зависит от того, что вы хотите сделать.Метод * args / ** kwargs работает довольно хорошо, как и аргументы по умолчанию, которые предлагает delnan.
Основное различие между C ++ и Python в этом случае заключается в what и почему того, что вы пытаетесь сделать.Если у вас есть класс, которому нужны числа с плавающей точкой, попробуйте привести аргументы как число с плавающей точкой.Вы также можете полагаться на аргументы по умолчанию для ветвления своей логики:
class Point(object):
def __init__(self, x=0.0, y=0.0, z=None):
# Because None is a singleton,
# it's like Highlander - there can be only one! So use 'is'
# for identity comparison
if z is None:
self.x = int(x)
self.y = int(y)
self.z = None
else:
self.x = float(x)
self.y = float(y)
self.z = float(z)
p1 = Point(3, 5)
p2 = Point(1.0, 3.3, 4.2)
p3 = Point('3', '4', '5')
points = [p1, p2, p3]
for p in points:
print p.x, p.y, p.z
Конечно, вам не нужно присваивать self.z = None
, что было просто для удобства моего примера.
Для получения лучшего совета о том, какой шаблон использовать,
В [17]: импортируйте этотДзен Питона, Тим Питерс
Красиво лучше, чем безобразно.Явное лучше, чем неявное.Простое лучше, чем сложное....
Если ваш шаблон красивый, явный и простой, он может быть правильным.