如果你在一個類中有一個叫做「set」的方法,並且希望在類的其他地方創建一個標準的內置「set」對象,Python似乎在我這樣做時引用了方法。你如何更具體地讓Python知道你的意思是內建的「set」,而不是「set」方法?更具體地說,set()是在_____exit_____函數中創建的。Python類有方法「set」,如何引用內建的set類型?
1
A
回答
10
我想我知道這裏發生了什麼。你在做這樣的事嗎?
>>> class A(object):
... def set(self):
... pass
... def test(self, x=set):
... return x
...
>>> set
<type 'set'>
>>> A().test()
<function set at 0x64270>
由於方法在類中定義的方式,這是一個微妙的問題。這是什麼讓你做出方法別名這麼容易,例如,
class A(object):
def some_method(self):
pass
some_other_method = some_method
您可以把set
在類定義的底部,或者你可以參考使用__builtins__.set
內建集。
+0
另一個選擇是'def test(self,x = None):','如果x是None:x = set'。 – 2011-11-15 23:02:43
2
通常方法名稱與全局名稱不同,因爲您必須以self.
爲前綴。
所以self.set()
調用你的類方法,set()
調用全局set
。
如果這沒有幫助,也許發佈你有問題的代碼。
3
對象屬性爲總是通過引用進行訪問,因此無法爲對象屬性投影內建對象。
2
您可以參考內置作爲__builtins__.set
。
1
如果您運行下面的代碼,您會注意到UsesSet
類的set
方法不會掩蓋內置集合類型。
class UsesSet(object):
def set(self):
pass
def other(self):
my_set = set([1, 2])
print type(my_set), my_set
obj = UsesSet()
obj.other()
上面的代碼輸出<type 'set'> set([1, 2])
表明我們班的set()
方法並沒有隱藏內置set()
然而,如果你在你已經定義了一個名爲功能設置如下圖所示模塊一些不同的情況:
def set(arg):
print "This is my own set function"
class UsesSet(object):
def other(self):
my_set = set([1, 2])
print type(my_set), my_set
obj = UsesSet()
obj.other()
上述輸出的代碼:
This is my own set function
<type 'NoneType'> None
因此,您可以看到與內置相同名稱的模塊級別函數隱藏了內置函數。
相關問題
- 1. Mongodb與Python的「set()」類型
- 2. 創建Set數據類型
- 3. Haskell:如何定義實例Show Set的類型Set = Int - > Bool
- 4. jquery set加載方法中的數據類型和內容類型
- 5. Python中的類變量[set()]
- 6. 'set'和Rails的列類型
- 7. 如何有效地在數據庫中存儲「set」(python類型)?
- 8. jdbc如何插入mysql SET類型?
- 9. ASN.1 SET類型限制
- 10. 有了Scala的Set,有沒有類似Java的Set中的containsAll方法的方法?
- 11. 使用或不使用ENUM/SET類型?
- 12. Ruby類的set/get
- 13. 如何用std :: set包含我的類
- 14. 創建類型爲Set的組的豆類<Class<?>>
- 15. 爲什麼Haskell中沒有內置的Set數據類型?
- 16. 在MySQL中使用`set`數據類型
- 17. set方法中其他類型的單詞是指什麼?
- 18. 如何獲取對循環內創建的set的引用?
- 19. CakePHP NestedList set李類
- 20. 不可設置的類型:'set'錯誤
- 21. 在類中使用std :: set?
- 22. 如何使用get/set方法?
- 23. .set()方法不在Python的xml.etree庫中?
- 24. Set類活躍在tabbable引導
- 25. Python:如何使用ast.literal_eval()來設置set中的set?
- 26. Get方法和Set方法在類中的區別
- 27. 如何在屬性類型有自己的'set'時使用對象屬性上的'set'?
- 28. 轉換內建函數類型方法類型(在Python 3)
- 29. Python Dict Set類初始化程序
- 30. Optparse Python Set布爾型
你的問題沒有意義,一種方法不能影響內建(除非你不放代碼:類範圍),所以你看到什麼問題*?怎麼了? – u0b34a0f6ae 2010-02-03 21:59:29
+1這是一些代表,但通過點擊最能幫助您的答案旁邊的檢查來感謝那些幫助您的人。 – 2010-02-03 22:00:28
一些示例代碼會很有幫助。 – 2010-02-04 01:59:40