自定义类
class Student(object):def __init__(self, name, score):self.name = nameself.score = scoredef print_score(self):print('%s: %s' % (self.name, self.score))
__init__ 代表实例的初始化, self 代表实例本身
>>> bart = Student('Bart Simpson', 59)>>> bart.name'Bart Simpson'>>> bart.score59>>> 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 = nameself.__score = scoredef print_score(self):print('%s: %s' % (self.__name, self.__score))
实际上,python解释器是把 __name 变成了 _Student__name ,还是可以访问的
>>> bart._Student__name'Bart Simpson'
但不同版本的python解释器会把__name 解释成不同的变量名,因此不推荐这种方式访问。
前面加一个下划线
_的变量也最好不要外部访问,虽然python没有禁止访问,但这是程序员之间默认的约定
