I have a class Node
which I want it to have multiple constructors.
I was reading online about factory methods and apparently, it is the cleanest Pythonic way of implementing constructors. My class looks as follows so far:
class Node(object):
element = None
left = None
right = None
def __init__(self, element):
self.element = element
@classmethod
def tree(cos, element, left, right):
self.element = element
self.left = left
self.right = right
# return here
What am I supposed to return here though? All examples I saw online had only one assignment and they would return that very assignment. I have three assignments. What is appropriate to return here?
In a named constructor (factory method), you should create an object that you want to return. E.g.
class Node(object):
def __init__(self, element):
self.element = element
self.left = self.right = None
@classmethod
def tree(cls, element, left, right):
node = cls(element)
node.left = left
node.right = right
return node
Note that you don't need the class members, and having class members with the same name as instance members is a bad idea.