簡體   English   中英

理解python中的點符號

[英]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()查看詳細信息或使用其他內省工具。

點是通用元素引用,而不僅僅是函數。 這表示獲取sysstderr元素,然后獲取stderrwrite元素。 為了實現這一點, stderr必須是一個包含元素的對象,而write必須是一個函數...因為括號意味着我們正在嘗試調用write

我們必須知道每個元素的一般語義:哪些是包,它們是常量,它們是函數等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM