面向对象
- 由于类可以起到模板的作用,因此,可以在创建实例的时候,通过定义一个特殊的__init__方法,把一些我们认为必须绑定的属性强制填写进去。
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
-
数据封装:
#内部可以访问
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')
-
继承和多态