私有屬性和私有方法

2021-10-02 15:29:54 字數 1451 閱讀 1725

class

student

(object):

def__init__

(self,name,score)

:# 前面帶兩個下劃線表示對變數進行私有化

# 外部不能隨便的訪問和更改

self.__name = name

self.__score = score

defget_grand

(self)

:print

('my name is %s,my grade is %d'

%(self.__name,self.__score)

)def

get_name

(self)

:return self.__name

defget_score

(self)

:return self.__score

defset_name

(self,name):if

isinstance

(name,

str)

: self.__name = name

else

:raise valueerror(

'請輸入正確的名字'

)def

set_score

(self,score):if

isinstance

(score,

int)

: self.__score = score

else

:raise valueerror(

'請輸入正確的成績'

)

如果像下面這樣呼叫會出錯,因為name和score是私有方法,類外部不能使用

tom = student(

'tom',89

)print

(tom.name)

print

(tom.score)

tom.__name =

'new_name'

這樣做只是給物件新增了__name的屬性,而不是修改私有屬性的值

可通過間接的方法來訪問:

tom = student(

'tom',89

)# print(tom.name)

# print(tom.score)

tom.set_name(

'tommm'

)tom.set_score(99)

print

(tom.get_name())

print

(tom.get_score(

))

輸出結果:

tommm

99

私有屬性和私有方法

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

私有屬性和私有方法

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

私有屬性和私有方法

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 cla...