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