我正在学习Python,我的编程背景是C语言,如果我在两者之间有任何混淆或混合,请告诉我。
假设我有以下类:
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
这是一个名为Node
的类,它重载了构造函数以便在需要时能够处理不同的参数。
在__init__
中仅定义self.element
(如上所示)与执行以下操作之间有何区别:
class Node(object):
element, left, right = None
def __init__(self, element):
self.element = element
self.left = self.right = None
self.element
在__init__
中不是与类的定义的element
变量相同吗?这难道不会仅仅将element
从None
覆盖为传入到__init__
中的element
值吗?
Foo.foovar
是可变对象(例如list
)的情况下,这些事情甚至可以变得更加有趣。 - mgilson