python的類,類的私有屬性__attr。私有屬性只能通過類的方法來訪問。
又學習到了實例和類都可以動態增加方法和屬性。
在此我就有一個疑問。類的動態增加的新方法,可以修改類裏的私有屬性嗎?
class Student(object):
def __init__(self,name,score):
self.__name=name;
self.__score=score;
self.__grade=3;##這是私有的屬性
self.grade=3; ##這是公有的。
def show_grade(self):
print("%s __grade=%d"% (self.__name,self.__grade));
print("%s grade=%d"% (self.__name,self.grade));
lisa=Student("lisa",88);
mona=Student("mona",82);
def set_grade(self,grade):
self.__grade = grade; ##實測發現,此函數調用後__grade 還是原值。__grade是私有變量。只能被class裏的“靜態方法”來修改。
self.grade = grade; ##此函數調用後,grade的值被修改了。grade是公開變量。可以被動態方法來修改。
#print("%s grade is %d"% (self.__name, self.grade));# 在這裏訪問不到self.__name,所以把此句註釋掉了。
Student.setGrade = set_grade;
lisa.setGrade(4);
lisa.show_grade();
結果如下:
lisa __grade=3
lisa grade=4
結論:
爲類動態增加的方法,對類裏私有屬性沒有讀與寫的權限。
參考:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318650247930b1b21d7d3c64fe38c4b5a80d4469ad7000
python類的動態方法是否可以訪問到私有變量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Python語言_思維導圖
Mingcai_Xiong
2020-06-25 08:08:52
第1章《啓蒙》.4.什麼是編程語言
南郁
2020-02-23 03:41:20
JAVA筆記
Garychan_NJ
2020-02-21 06:43:05
JAVA筆記
Garychan_NJ
2020-02-21 06:43:04
latex 常見論文操作總結(second edition)
W.J.Z
2019-04-03 21:12:28
http與CGI的測試之POST的方式。
yaxinsn
2018-08-27 18:34:38
http與cgi的小測試之GET
yaxinsn
2018-08-27 18:34:37
ANSI C、ISO C、Standard C、C89、C90、C99
夜雨风云
2018-08-26 15:57:54