自定义类
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))
__init__
代表实例的初始化, self
代表实例本身
>>> bart = Student('Bart Simpson', 59)
>>> bart.name
'Bart Simpson'
>>> bart.score
59
>>> bart.print_score()
Bart Simpson: 59
看似 bart.print_score()
没有传入参数,实际上它是将 bart
作为第一个参数 self
传入,与 Student.print_score(bart)
等价。
>>> Student.print_score(bart)
Bart Simpson: 59
访问限制
上面的代码不仅能访问 bart.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))
实际上,python解释器是把 __name
变成了 _Student__name
,还是可以访问的
>>> bart._Student__name
'Bart Simpson'
但不同版本的python解释器会把__name
解释成不同的变量名,因此不推荐这种方式访问。
前面加一个下划线
_
的变量也最好不要外部访问,虽然python没有禁止访问,但这是程序员之间默认的约定