微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这段代码是如何考虑x.a的初始化的? 结论

如何解决这段代码是如何考虑x.a的初始化的? 结论

这里在类 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 类对象left50

如果你做 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。