面线对象 第一部分 类和实例

发布时间 2023-07-14 15:26:16作者: 胖豆芽
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())# 打印成绩的类别