[英]Understanding the dot notation in python
當我導入一個模塊,比如sys時,我假設我正在導入一個腳本,並且為了訪問它的功能,我必須使用點表示法。 例如,我想寫一些東西到控制台:
sys.stderr.write("Error")
在這里,我訪問stderr“函數?” 從模塊sys,但然后我訪問其write屬性,這也是一個函數? 我怎么知道stderr是否是一個子類化sys的類,或者它是否是一個函數?
非常感謝。
一旦導入模塊(如sys
或任何東西),點符號就可以引用它包含的任何內容 。 您還可以導入“包”,其中包含模塊,類,類中的方法,模塊中的函數等。
>>> import sys
>>> type(sys)
<class 'module'>
>>> sys.stderr
<_io.TextIOWrapper name='<stderr>' mode='w' encoding='cp437'>
>>> type(sys.stderr)
<class '_io.TextIOWrapper'>
>>> type(sys.stderr.write)
<class 'builtin_function_or_method'>
>>>
它意味着是通用的屬性排序訪問,其中另一個內容通過點訪問,就像它是該對象的屬性一樣。
我認為這是模糊的,因此模塊/包的用戶不需要關心這些對象的實現細節。 如果它們發生變化,只要保持結構和名稱,它引用的實際對象就不會引起用戶的關注。 他們總是可以使用type()
或help()
查看詳細信息或使用其他內省工具。
點是通用元素引用,而不僅僅是函數。 這表示獲取sys
的stderr
元素,然后獲取stderr
的write
元素。 為了實現這一點, stderr
必須是一個包含元素的對象,而write
必須是一個函數...因為括號意味着我們正在嘗試調用write
。
我們必須知道每個元素的一般語義:哪些是包,它們是常量,它們是函數等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.