python学习笔记7 -- 类

一、创建类 -- 定义属性

1、基本结构

class NameOfClass:     

         #class声明,后面跟上类的名字,类后加冒号,代表下方是定义类的代码

        #定义类的一些代码

        #

python在定义类名时,用Pascal命名风格,用大写字母进行分割单词

2、构造函数:

作用:定义实例对象的属性

必须被命名为init,前后必须分别有两个下划线,括号里面可以放任意数量的参数

        但第一个参数永远被占用,用于表示对象自身,约定俗称self。

                作用:帮助把属性的值绑定在实例对象上

例:死板的init方法

class dog:
    #思考该类的对象都有什么属性
    def __init__(self):
        self.name = "Pup"  #将该值看成对象的属性
        #若前面没有self,代码为name = "Pup",意为只是给普通的name赋值变量

#调用dog创建对象:
dog1 = dog()
#此时,dog1的name属性会被赋值为Pup

#获取对象的属性,用对象.属性名来获取
print(dog1.name)
#会返回dog1对象所绑定的name属性的值

例:调用参数对属性赋值

class dog:
    #思考该类的对象都有什么属性
    def __init__(self,name):
        self.name = name  #将该值看成对象的属性
        #若前面没有self,代码为name = "Pup",意为只是给普通的name赋值变量

#调用dog创建对象:
dog1 = dog("Pup")
#此时,dog1的name属性会被赋值为Pup

#获取对象的属性,用对象.属性名来获取
print(dog1.name)
#会返回dog1对象所绑定的name属性的值

例:多个参数

class dog:
    #思考该类的对象都有什么属性
    def __init__(self,name,color,age):
        self.name = name  #将该值看成对象的属性
        self.color = color
        self.age = age
        #若前面没有self,代码为name = "Pup",意为只是给普通的name赋值变量

#调用dog创建对象:
dog1 = dog("Pup","blue",2) #对定义的属性进行赋值
#此时,dog1的name属性会被赋值为Pup

#获取对象的属性,用对象.属性名来获取
print(f"小狗的名字为{dog1.name},年龄为{dog1.age},颜色为{dog1.color}")
#会返回dog1对象所绑定的name属性的值

二、创建类 -- 定义方法

1、方法的含义:

表示对象能做什么事

2、定义方法:

与定义普通函数差不多,仅有两个区别

        1、写在class里面,前面要有缩进,表示属于该类的方法

        2、第一个参数被占用(与init一样),用于表示对象自身self

                作用:在方法里面,获取或修改和对象绑定的属性

                调用结果会根据属性的不同而改变

3、调用方法:

对象.方法名()

        #括号中加入调用参数,不需要手动将self参数传入

例:一个设置学生成绩并查看的程序

1、自写

class Student:
    def __init__(self, name, number, score_chin, score_math, score_eng):
        #初始化
        self.name = "none"
        self.number = "none"
        self.score_chin = "0"
        self.score_math = "0"
        self.score_eng = "0"
        #赋值
        self.name = name
        self.number = number
        self.score_chin = score_chin
        self.score_math = score_math
        self.score_eng = score_eng

    def score_print(self):
        print(
            f"该学生姓名为{self.name},语文成绩为{self.score_chin},数学成绩为{self.score_math},英语成绩为{self.score_eng}")


student1 = Student("Tina", 1001, 50, 60, 70)

student1.score_print()

2、优化后——采用字典

class Student:
    def __init__(self, name, id):
        self.name = name
        self.id = id
        #应用字典
        self.grades = {"语文": 0, "数学": 0, "英语": 0}

    def set_grades(self, course, grade):
        if course in self.grades:
            self.grades[course] = grade

    def print_grades(self):
        print(f"学生{self.name},学号为:{self.id},的成绩为:")
        for course in self.grades:
            print(f"{course}:{self.grades[course]}分")


chen = Student("小陈", "1001")
print(chen.name)
print(chen.grades)
chen.set_grades("数学", 95)
print(chen.grades)
chen.print_grades()

你可能感兴趣的:(python学习笔记,学习,笔记)