面线对象 第一部分 类和实例
1. # 理解类 class Student(object): pass bart= Student() # 变量bart指向的就是一个Student的实例,后面的0x10a67a590是内存地址,每个object的地址都不一样,而Student本身则是一个类 # print(bart)# <__main__.Student object at 0x0000022F8E4E33D0> bart2= Student() print(bart2) # <__main__.Student object at 0x0000023513CA33A0> print(Student)# <class '__main__.Student'> # 给实例绑定一个name属性 bart.name= 'fqs' print(bart.name)
2. # 因为类有模板的作作用所以,通过定义一个特殊的方法__init__方法,绑定属性 # 和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self # 支持默认参数、可变参数、关键字参数和命名关键字参数。 class Student(object): def __init__(self,name,score):# self 表示实例本身 self.name= name self.score= score # 实例化 bart = Student('fqs',59) print(bart.name,bart.score)
3. # 但是,既然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)) def get_grade(self): if self.score>= 90: return 'A' elif self.score>= 60: return 'B' else: return 'C' # 创建实例 仅做传参,不管类内做的(类内部决定了打印的效果,比如新增加一个判断ABC级别的类) bart=Student('fqs',59) # 调用类中封装的方法 bart.print_score()# 打印成绩 print(bart.get_grade())# 打印成绩的类别