91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中私有屬性的定義方式

發布時間:2020-10-22 11:50:05 來源:腳本之家 閱讀:211 作者:Daniel2333 欄目:開發技術

Python沒有類似于Java的private關鍵字, 但也可以為類定義私有屬性. 只需將屬性命名變為以__開頭, 例如 __field.

示例代碼:

class Vector2D(object):
  def __init__(self, x, y):
    self.__x = float(x)
    self.__y = float(y)
    self.xx = x
    self.yy = y 
  def get_x(self):
    return self.__x # 內部訪問
if __name__ == "__main__":
  v = Vector2D(3, 4)
  print v.__dict__
  print v._Vector2D__x, v.get_x()# 但是可以通過v._Vector2D__x 在外部訪問
  v.__x # 外部訪問

輸出:

{'yy': 4, 'xx': 3, '_Vector2D__x': 3.0, '_Vector2D__y': 4.0}
3.0 3.0
Traceback (most recent call last):
...
v.__x
AttributeError: 'Vector2D' object has no attribute '__x'

從上面的例子可以看出:

1. __field被編譯器重命名為_className__field

2. 在class外部不能訪問obj.__field, 但在class內部可以

3. 但是, 這只能防止無意間的調用, 不能防止惡意調用, 用Fluent Python的話來講, 這是一種safety device, not security device, 用國語來講, 就是防君子不防xx, 因為可以通過obj._className__field在外部訪問obj的私有__field.

補充知識:python中私有屬性和私有方法,修改私有屬性的值

如果一個屬性是以兩個下劃線開始 就標識這個這個屬性是一個私有屬性

self.__money = 1000000

如果一個方法是以兩個下劃線開始 也代表已經私有

子類繼承了父類 如果父類的屬性私有 將不會被子類繼承

私有屬性和私有方法可以在類的里面使用

自定義類中 如果一個屬性進行了私有 在類的外面不能調用

修改私有屬性的值

如果需要修改一個對象的屬性值,通常有2種方法

對象名.屬性名 = 數據 ----> 直接修改

對象名.方法名() ----> 間接修改

私有屬性不能直接訪問,所以無法通過第一種方式修改,一般的通過第二種方式修改私有屬性的值:定義一個可以調用的公有方法,在這個公有方法內訪問修改。

class Person(object):
 
  def __init__(self):
    self.name = "小明"
    self.__age = 20
 
  #獲取私有屬性的值
  def get_age(self):
    return self.__age
 
  #設置私有屬性的值
  def set_age(self, new_age):
    self.__age = new_age
 
 
#定義一個對象
p = Person()
#強行獲取私有屬性
#崇尚一切靠自覺
print(p._Person__age)
print(p.name)
#想在類的外面獲取對象的屬性
ret = p.get_age()
print(ret)
 
#想在類的外面修改對象私有屬性的值
p.set_age(30)
print(p.get_age())

以上這篇Python中私有屬性的定義方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

红桥区| 德保县| 武平县| 东方市| 图们市| 原阳县| 洛阳市| 莱州市| 濮阳市| 铁力市| 彭山县| 闽清县| 留坝县| 土默特右旗| 梅州市| 乌鲁木齐县| 潢川县| 安西县| 广灵县| 庐江县| 南召县| 织金县| 长顺县| 金塔县| 奇台县| 宽甸| 松桃| 呼和浩特市| 徐水县| 伽师县| 安西县| 开江县| 襄城县| 蛟河市| 嘉义县| 隆昌县| 万年县| 永和县| 饶平县| 泾川县| 尉氏县|