您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何進行實現Python的配置,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
在Python配置中的一個文本區域,其中某個名字空間可以直接訪問,“直接訪問” 這里指的是使用不加修飾的名字就直接找到名字空間中的對象,可以直接學習Python不必先從C下手。
例如,所有方法名用大寫字母開頭,所有數據屬性名前用一個***的字符串開頭(或者只是一個下劃線),或方法名用動詞而數據名用名詞。數據屬性可以被方法引用也可以被普通用戶(“客戶”)引用。換句話說,類不能用來構造抽象數據類型。實際上。
Python中沒有任何辦法可以強制進行數據隱藏——這些都是基于慣例。(另一方面,Python的實現是用C寫的,它可以完全隱藏實現細節,必要時可以控制對象存取;用C寫的Python擴展模塊也有同樣特性)。
客戶要自己小心使用數據屬性——客戶可能會因為隨意更改類對象的數據屬性而破壞由類方法維護的類數據的一致性。注意客戶只要注意避免名字沖突可以任意為實例對象增加新數據屬性而不需影響到方法的有效性——這里,有效的命名慣例可以省去許多麻煩。
從方法內要訪問本對象的數據屬性(或其它方法)沒有一個簡寫的辦法。我認為這事實上增加了程序的可讀性:在方法定義中不會混淆局部變量和實例變量。習慣上,方法的***自變量叫做self。這只不過是一個習慣用法:名字self在Python配置中沒有任何特殊意義。但是。
因為用戶都使用此慣例,所以違背此慣例可能使其它Python配置不容易讀你的程序,可以想象某些類瀏覽程序會依賴于此慣例)。作為類屬性的任何函數對象都為該類的實例定義一個方法。函數的定義不一定必須在類定義內部:只要在類內把一個函數對象賦給一個局部變量就可以了。例如:
>>> class Complex: ... def __init__(self, realpart, imagpart): ... self.r = realpart ... self.i = imagpart ... >>> x = Complex(3.0,-4.5) >>> x.r, x.i (3.0, -4.5)
現在f、g和h都是類C的屬性且指向函數對象,所以它們都是C的實例的方法——其中h與g 完全等價。注意我們應該避免這種用法以免誤導讀者。方法可以用代表所屬對象的self自變量來引用本類其它的方法,如:
class VirtualAttributes: __vdict = None __vdict_name = locals().keys()[0] def __init__(self): self.__dict__[self.__vdict_name] = {} def __getattr__(self, name): return self.__vdict[name] def __setattr__(self, name, value): self.__vdict[name] = value
方法可以和普通函數一樣地引用全局名字。方法的全局作用域是包含類定義的模塊。(注意類本身并不被用作全局作用域!)雖然我們很少需要在方法中使用全局數據,全局作用域還是有許多合法的用途:
例如,導入全局作用域的Python配置和模塊可以被方法使用。在同一模塊中定義的函數和方法也可以被方法使用。包含此方法的類一般也在此全局作用域中定義,下一節我們會看到一個方法為什么需要引用自己的類!
一段需要以某種抽象數據類型作為輸入的Python程序經常可以接受一個類作為輸入,該類只是模仿了應輸入的數據類型的方法。例如,如果你有一個函數是用來格式化一個文件對象中的數據,就可一個定義一個具有方法read()和readline()的類,該類可以不從文件輸入而是從一個字符串緩沖區輸入,把這個類作為自變量。
看完上述內容,你們對如何進行實現Python的配置有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。