Discuss / Python / 打卡第五天

打卡第五天

Topic source
# 而Student本身则是一个类。# 可以自由地给一个实例变量绑定属性,比如,给实例bart绑定一个name属性:bat.name='Mary'# 由于类可以起到模板的作用,因此,可以# 在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去:class Student(object):    def __init__(self, name, score):        self.name = name        self.score = score# 数据封装# 面向对象编程的一个重要特点就是数据封装。在上面的Student类中,每个实例就拥有各自的name和score这些数据。# 我们可以通过函数来访问这些数据,比如打印一个学生的成绩:def print_score(std):    print('%s: %s' % (std.name, std.score))# 但是,既然Student实例本身就拥有这些数据,要访问这些数据,就没有必要从外面的函数去访问,# 可以直接在Student类的内部定义访问数据的函数,这样,就把“数据”给封装起来了。这些封装数据的函数是和Student类本身是关联起来的,我们称之为类的方法: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))# 这样一来,我们从外部看Student类,就只需要知道,创建实例需要给出name和score,而如何打印,# 都是在Student类的内部定义的,这些数据和逻辑被“封装”起来了,调用很容易,但却不用知道内部实现的细节。# 封装的另一个好处是可以给Student类增加新的方法,比如get_grade:# 类是创建实例的模板,而实例则是一个一个具体的对象,各个实例拥有的数据都互相独立,互不影响;# # 方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据;# # 通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。

  • 1

Reply