私有屬性和私有方法

2021-10-03 01:55:11 字數 2369 閱讀 8435

classa:

def__init__

(self)

: self.num1 =

100 self.__num2 =

200def

__test

(self)

:print

("私有方法 %d %d"

%(self.num1, self.__num2)

)def

test

(self)

:print

("父類的公有方法 %d"

% self.__num2)

self.__test(

)class

b(a)

:def

demo

(self)

:# 1. 在子類的物件方法中,不能訪問父類的私有屬性

# print("訪問父類的私有屬性 %d" % self.__num2)

# 2. 在子類的物件方法中,不能呼叫父類的私有方法

# self.__test()

# 3. 訪問父類的公有屬性

print

("子類方法 %d"

% self.num1)

# 4. 呼叫父類的公有方法

self.test(

)pass

# 建立乙個子類物件

b = b(

)print

(b)b.demo(

)# 在外界訪問父類的公有屬性/呼叫公有方法

print

(b.num1)

b.test(

)# 在外界不能直接訪問物件的私有屬性/呼叫私有方法

# print(b.__num2)

# b.__test()

應用場景

在實際開發中,物件 的 某些屬性或方法 可能只希望 在物件的內部被使用,而 不希望在外部被訪問到

私有屬性 就是 物件 不希望公開的 屬性

私有方法 就是 物件 不希望公開的 方法

定義方式

在 定義屬性或方法時,在 屬性名或者方法名前 增加 兩個下劃線,定義的就是 私有 屬性或方法

010_私有屬性和方法

class women:

def __init__(self, name):

self.name = name

# 不要問女生的年齡

self.__age = 18

def __secret(self):

print("我的年齡是 %d" % self.__age)

xiaofang = women(「小芳」)

私有屬性,外部不能直接訪問

print(xiaofang.__age)

私有方法,外部不能直接呼叫

xiaofang.__secret()

在日常開發中,不要使用這種方式,訪問物件的 私有屬性 或 私有方法

python 中,並沒有真正意義私有

在給 屬性、方法 命名時,實際是對 名稱 做了一些特殊處理,使得外界無法訪問到

處理方式:在 名稱 前面加上 _類名 => _類名__名稱

私有屬性,外部不能直接訪問到

print(xiaofang._women__age)

私有方法,外部不能直接呼叫

xiaofang._women__secret()

class

women

:def

__init__

(self, name)

: self.name = name

self.__age =

18def

__secret

(self)

:# 在物件的方法內部,是可以訪問物件的私有屬性的

print

("%s 的年齡是 %d"

%(self.name, self.__age)

)xiaofang = women(

"小芳"

)# 私有屬性,在外界不能夠被直接訪問

# print(xiaofang.__age)

# 私有方法,同樣不允許在外界直接訪問

# xiaofang.__secret()

# 偽私有屬性,在外界不能夠被直接訪問

print

(xiaofang._women__age)

# 偽私有方法,同樣不允許在外界直接訪問

xiaofang._women__secret(

)

執行結果:

18小芳 的年齡是 18

私有屬性和私有方法

應用場景及定義方式 應用場景 在實際開發中,物件的某些屬性或方法可能只希望在物件的內部使用,而不希望在外部被訪問到 私有屬性 就是 物件 不希望公開的 屬性 私有方法 就是 方法 不希望公開的 方法 定義方法 在定義屬性或方法時,在屬性名或者方法名前增加兩個下劃線,定義的就是私有屬性或方法 clas...

私有屬性和私有方法

應用場景 定義方式 不要問女生的年齡 self.age 18 def secret self print 我的年齡是 d self.age xiaofang women 小芳 私有屬性,外部不能直接訪問 print xiaofang.age 私有方法,外部不能直接呼叫 xiaofang.secret...

私有屬性和私有方法

class student object def init self,name,score 前面帶兩個下劃線表示對變數進行私有化 外部不能隨便的訪問和更改 self.name name self.score score defget grand self print my name is s,my ...