面向?qū)ο?/h4>
- 由于類可以起到模板的作用婴梧,因此,可以在創(chuàng)建實例的時候客蹋,通過定義一個特殊的__init__方法塞蹭,把一些我們認(rèn)為必須綁定的屬性強(qiáng)制填寫進(jìn)去。
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
-
數(shù)據(jù)封裝:
#內(nèi)部可以訪問
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print '%s: %s' % (self.name, self.score)
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
數(shù)據(jù)封裝:
#內(nèi)部可以訪問
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print '%s: %s' % (self.name, self.score)
以一個下劃線開頭的實例變量名讶坯,比如_name
番电,這樣的實例變量外部是可以訪問的,但是約定辆琅,視為私有變量钧舌,不要隨意訪問。雙下劃線開頭的實例變量是不是一定不能從外部訪問呢涎跨?其實也不是洼冻。不能直接訪問 __name
是因為Python解釋器對外把__name
變量改成了_Student__name
,所以隅很,仍然可以通過_Student__name
來訪問__name
變量:
訪問通過get_set方法訪問:
class Student(object):
...
def get_name(self):
return self.__name
def get_score(self):
return self.__score
def set_score(self, score):
if 0 <= score <= 100:
self.__score = score
else:
raise ValueError('bad score')
-
繼承和多態(tài)