面向对象
类和实例
类是抽象的模板;实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同;
定义类:class
class Student(object):
pass
类名通常开头大写,若无其他继承,则继承至object
类
创建实例:类名+()
bart=Student()
为实例变量绑定属性:
bart.name=‘Bart Simpson’
(即直接定义)(直接一句完成声明、定义)
类作为模板,若需强制附带属性,可通过特殊的__init__
方法
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
和普通的函数相比,在类中定义的函数只有一点不同,第一个参数永远是实例变量self
,调用时,不用传递该参数,表示创建实例本身,在方法内部可以将各种属性绑定到self
(有了__init__
方法后,外界在创建类的实例变量时,必须传入与方法匹配的参数,在外界对其传入参数时,只需传入self
后面参数即可)
方法即为和类绑定的函数,和普通函数不同,方法可访问实例的数据
和静态语言不同,python允许实例变量绑定任何数据
数据封装
将数据和逻辑封装,通过类的方法直接与外界交流,调用简单,无需知道内部是实现细节(在方便的同时可实现对内部数据的保护)
通过封装,还可以在方法内部添加参数检查工具,以保障外部数据的正确传值。
访问限制
如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__
,Python中,实例的变量名如果以__
开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问
class Student(object):
def __init__(self, name, score):
self.__name = name
self.__score = score
def print_score(self):
print('%s: %s'