python 和 區別 Python 對 和

2021-10-11 09:48:05 字數 1478 閱讀 2822

在其他語言中,屬性以_開頭一般用於表示這個屬性是私有屬性,不能在外部訪問。

在python中是不存在私有屬性這種說法的。以_開頭的屬性,只是表名是私有屬性,和api的呼叫沒有關係。但是也是可以呼叫的

classa():def __init__(self):

self._private= "am i private?"a=a()print(a._private)

# 結果

# 『am i private?』

以_ _開頭的屬性,可以實現私有的功能。但它真正的用途是防止子類重寫該屬性。

classa():def __init__(self):

self.__private = "am i private?"a=a()print(a.__private)# traceback (most recent call last):

# file "e:/www/py3/test/config.py", line 7, in

# print(a.__private)

# attributeerror: 'a' object has no attribute '__private'

_ _private屬性依舊可以被訪問。以上的呼叫報錯的原因,是呼叫錯了名字。

_ _實現防止子類重寫的原理,其實就是給屬性改乙個名字。

我們用dir()函式可以看到

classa():def __init__(self):

self.__private = "am i private?"a=a()print(dir(a))#['_a__private', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__',

'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

這個'_a__private'其實就是__private。為了防止複寫,給他改了個名字(總覺得這種處理方式有點萌哈哈哈哈)

所以如果想呼叫,甚至修改,只需要呼叫  a._a__private

但是別這麼做啊!!!!

classa():def __init__(self):

self.__private = "am i private?"

deffunc(self):print(self.__private)

a=a()

a.func()

a._a__private= 'nonono'a.func()#am i private?#nonono

「is」和「 」的區別 Python

is用來檢查物件的標識 id id 函式用於獲取物件記憶體位址,而 用來檢查兩個物件引用的變數的值是否相等。通過乙個例子說明。建立一些列表並將其分配給不同的名字。請注意,下面的b指向與a相同的物件 a 1 2,3 b a c 1,2,3 下面來檢查是否相等,你會注意到結果顯示它們都是相等的。prin...

python 和is的區別

python中物件包含的三個基本要素,分別是 id 身份標識 type 資料型別 和value 值 是python標準操作符中的比較操作符,用來比較判斷兩個物件的value 值 是否相等 is也被叫做同一性運算子,這個運算子比較判斷的是物件間的唯一身份標識,也就是id是否相同 舉例 x y 4,5,...

python 和 的區別

相同點 和 都是用於求和 連線運算的 不同點 對於可變物件來說 和 是不一樣的 set和dict沒有這兩個操作 可變物件 相當於對原物件 之後產生乙個新物件 可變物件 相當於修改原物件內部的值,並沒有修改原物件,也就是修改前後物件的記憶體位址不變 id 記憶體位址的整數表示 示例 如下所示 ls 1...