根據廖雪峰老師的**,學習過後的筆記
分析:
在class內部,可以有屬性和方法,而外部**可以通過直接呼叫例項變數的方法來運算元據,這樣,就隱藏了內部的複雜邏輯。如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線__
,在python中,例項的變數名如果以__
開頭,就變成了乙個私有變數(private),只有內部可以訪問,外部不能訪問。而通過設定兩個get_name(self)或者get_score(self)可以允許外部訪問!
通過set(name)函式可以修改name屬性或者score屬性的值,但一般不會這麼幹!class student(object):
...def get_name(self):
return self.__name
def get_score(self):
return self.__score
有些時候,你會看到以乙個下劃線開頭的例項變數名,比如class student(object):
...def set_score(self, score):
self.__score = score
_name
,這樣的例項變數外部是可以訪問的,但是,按照約定俗成的規定,當你看到這樣的變數時,意思就是,「雖然我可以被訪問,但是,請把我視為私有變數,不要隨意訪問」。
最後,根據以上,完成問題的答案!
測試**:#建立student類
class student(object):
#定義屬性
def __init__(self, name, gender):
self.name = name
self.__gender = gender
#定義函式使得類外部可以呼叫gender值
def get_gender(self):
return self.__gender
#定義函式使得類外部可以修改gender值,並設定gender值的有效性檢查
def set_gender(self,gender):
if gender in ('female','male'):
self.__gender=gender
else:
raise valueerror('invaild gender')
# 測試樣例:
bart = student('bart', 'male')
if bart.get_gender() != 'male':
print('測試失敗!')
else:
bart.set_gender('female')
if bart.get_gender() != 'female':
print('測試失敗!')
else:
print('測試成功!')
另一問題:為了統計學生人數,可以給student類增加乙個類屬性,每建立乙個例項,該屬性自動增加:(關於類-繼承-多型的問題)
class student(object):
count = 0
def __init__(self, name):
self.name = name
student.count+=1
# 測試:
if student.count != 0:
print('測試失敗!')
else:
bart = student('bart')
if student.count != 1:
print('測試失敗!')
else:
lisa = student('bart')
if student.count != 2:
print('測試失敗!')
else:
print('students:', student.count)
print('測試通過!')
Python類的屬性與方法
1 類的私有屬性和方法 private attrs 兩個下劃線開頭,宣告該屬性為私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時self.private attrs。private method 兩個下劃線開頭,宣告該方法為私有方法,不能在類地外部呼叫。在類的內部呼叫self.priva...
python中關於「類的屬性和方法」的個人通俗理解
在python中或者其他的語言中我自認為類是乙個比較難懂的概念。今天說的類的屬性和方法,我通過在網上和書上查詢,總結了一些自己的理解,跟大家分享一下,還請多多指教。我們為什麼定義類,主要是因為類具有繼承,多型等等一些特性,在這些特性的基礎上我們可以減少 的復用,也就是說我們可以將 打包起來。關於類的...
Python中類的方法屬性與方法屬性的動態繫結
最近在 學習python 純粹是自己的興趣愛好,然而並沒有系統地看python 程式設計書籍,覺得上面描述過於繁瑣,在 找了一些學習的 發現廖雪峰老師的 上面的學習資源很不錯,而且言簡意賅,提取了一些 python python 的執行 缺點就是沒有系統的看 python 的書籍,不能及時的將知識的...