问题描述
这里在类 Node 中没有名为“a”的属性,那么 x.a 的含义是什么?对象名称可以包含字符“.”吗?在 python 中?
class Node :
def __init__(self,left = None,data = None,right = None) :
self.left = left
self.data = data
self.right = right
x = Node(50)
x.a = Node(40)
解决方法
Python 是一种动态类型语言。这意味着您可以设置任何变量的值,而无需声明该变量。
在您的代码段中,x = Node(50)
正在创建一个新的节点类对象,其中 x.left
分配给 50。
现在通过执行 x.a = Node(40)
,我们只是定义了一个名为 x
的对象 a
的新属性,它将是一个 Node 类对象left
值 50。
如果你做 dir(x)
,它会给你这样的东西,
['__class__','__delattr__',#Some other attributes
'__weakref__','a','data','left','right']
如果您查看最后 4 个属性,您会发现 a
现在也被添加为 x 对象的属性。 >
结论
如果在对象中不存在 x.new_attribute = Node(10,20,30)
时执行 new_attribute
,那么 python 将在 {{ 1}} 名称为 x
的对象并为其分配值 new_attribute
。