J'ai créé une classe et j'aimerais donner à l'utilisateur (probablement moi) deux façons différentes de l'initialiser. Pour cet exemple, la classe est appelée Box
et je souhaite initialiser avec soit:nécessite des paramètres nommés dans la fonction python
deux ensembles de coordonnées cartésiennes, représentant le min et max (x, y).
un ensemble de coordonnées cartésiennes représentant les minutes et les dimensions de la boîte
Je peux le faire en utilisant les paramètres nommés, mais je voudrais soulever une erreur si aucun paramètre nommé est appelé. Mon code actuel met un paramètre fictif appelé pass_var
dans le cas où aucun paramètre nommé n'est appelé. Cela fonctionne, mais je pense qu'il doit y avoir une solution plus élégante ou Pythonic.
class Box(object):
def __init__(self, pass_var=None, coordinates=None, min_points=None, dimensions=None):
if coordinates:
setup_box_from_coordinates()
return
elif min_points and dimensions:
setup_box_from_dimensions()
return
raise NameError("Box Class needs to be initiated with 'coordinates='' or 'min_pts= & dimensions='"
Merci beaucoup! J'utiliserai les méthodes de classe comme vous le suggérez, cela rendra le code plus simple. – VectorVictor
Aussi, si quelqu'un d'autre le trouve utile, voici plus sur classmethod - http://stackoverflow.com/questions/1950414/what-does-classmethod-do-in-this-code/1950927#1950927 – VectorVictor