python我的代码如何才能发现对象的名称?
小编:艳芬 490阅读 2020.08.25
通常来说是做不到的,因为对象并不真正具有名称。 在本质上,赋值总是会将一个名称绑定到某个值;def和class语句也是如此,但在这种情况下该值是一个可调用对象。 考虑以下代码:
>>> class A:
... pass
...
>>> B = A
>>> a = B()
>>> b = a
>>> print(b)
<__main__.A object at 0x16D07CC>
>>> print(a)
<__main__.A object at 0x16D07CC>
不严谨地讲,该类有一个名称:虽然它是绑定了两个名称并通过名称 B 发起调用,所创建的实例仍然被视为类 A 的一个实例。 但是实例的名称则无法确定地说是 a 或是 b,因为有两个名称被绑定到了同一个值。
一般来说你的代码应该没有必要“知道”特定值的名称。 除非你是在编写特殊的内省程序,出现这样的问题通常表明如果改变方式可能会更有利。
在 comp.lang.python 中,Fredrik Lundh 在回答这样的问题时曾经给出过一个绝佳的类比:
跟你找出在你家门廊见到的某只猫的名字所用的办法一样:猫(对象)自己无法告诉你它的名字,它根本就不在乎 —— 所以找出它叫什么名字的唯一办法是问你的所有邻居(命名空间)那是不是他们的猫(对象)……
……并且如果你发现它有很多名字或根本没有名字也不必觉得惊讶!
逗号运算符的优先级是什么?
逗号在 Python 中不是运算符。 考虑这个例子:
>>> "a" in "b", "a"
(False, 'a')
由于逗号不是运算符而是表达式之间的分隔符,以上代码的含义就相当于:
("a" in "b"), "a"
而不是:
"a" in ("b", "a")
对于各种赋值运算符 (=, += 等) 来说同样如此。 它们并不是真正的运算符而是赋值语句中的语法分隔符。
相关推荐
- Python 爬虫面试题 170 道:2019 版 所有题目 语言特性 1.谈谈对 Python 和其他语言的区别2.简述解释型和编译型编程语言3.Python 的解释器种类以及相关特点?4.说说你知道的Python3 和 Python2 之间的区别?5.Python3 和 Python2 中 int 和 long 区别?6.xrange 和 range 的区别?编码规范 7.什么…
- 自然语言处理工具python调用hanlp中文实体识别 Hanlp作为一款重要的中文分词工具,在GitHub的用户量已经非常之高,应该可以看得出来大家对于hanlp这款分词工具还是很认可的。本篇继续分享一篇关于hanlp的使用实例即Python调用hanlp进行中文实体识别。想要在python中调用hanlp进行中文实体识别,Ubuntu 16.04…
- 3DMAX提示和技巧 本主题标识使用 Civil View 的一些重要提示和技巧。常规使用屏幕分辨率至少为 1280x1024 的 Civil View。低于此分辨率时,一些面板将占用过多屏幕空间。 将视口设置为线框显示以达到最佳性能。 要尽可能简化用户界面,请在单个视口中工作并关闭 3ds Max 命令面…