python我的代碼如何才能發現對象的名稱?
小編:艷芬 408閱讀 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 命令面…