1.什么是类
a . 类就是拥有相同方法和相同属性的对象的集合。对象就是类的实例。
b . 类是抽象的,类是具体的。
2.定义一个类
class 类名(): 属性 方法
class: 定义类的关键字
类名: 标识符: 类名的首字母大写,见名知义
( ): 固定格式,里面放被继承的类
属性: 属性+字段(类属性和对象属性)
方法: 所谓方法就是定义在类中的函数
例如: 创建一个人类
#(1)创建类 class Person(): """ -----方法 类中对象方法都有一个默认的参数self,用来接收调用方法的对象本身。调用的时候不用我们来给他传参,系统会自动给他传参 对象方法:需要使用对象来调用 """ def run(self): print(2,self) print('长跑五千米') def eat(self): print('刚吃了小龙虾') # (2)声明对象(使用类) han_bo = Person() #创建了一个Person对象xiao_ming.创建完后,xiao_ming对象就拥有了Person中所有的对象属性和对象方法 print(1,han_bo) #打印这个对象的内存地址 han_bo.run() #>>>长跑五千米 #self参数对应的值,系统会自动传递。谁调用当前的这个方法,self就指向谁 #在这儿,run方法中的self参数就是xiao_ming han_bo.eat() #>>>刚吃了小龙虾 # 一个类可以有多个对象 wang_yan = Person() #xiao_hua也是Person的对象 print(1,wang_yan) wang_yan.run() #run里面的self就是xiao_hua wang_yan.eat()
3.属性和init方法(类的说明)
# (1) __init__方法是在创建对象的时候会被自动调用的方法,作用是用来初始化对象. # (2) 如果没有定义这个方法,系统会自动定义一个只有self参数的__init__方法. class Person(): def __init__(self,name1,age1,face1): # 声明类的对象字段,字段就是用来保存对象的属性 # 这儿name,age和face就是类的对象字段 self.name = name1 self.age = age1 self.face = face1 # (3) 通过类创建对象的时候,系统会自动调用类的__init__方法,并且将()中的参数,作为__init__方法的参数 # 注意:在创建对象的时候。类名后()中的参数要和__init__方法中除了self以外的其他的参数一一匹配 # 如果没有手动的去定义__init__方法,系统会调用一个除了self以外没有其他参数的一个__init__方法 han_bo = Person('han_bo1',23,80) #创建han_bo这个对象 # (4) 使用对象的属性:对象名.属性 print(han_bo.name) #>>>han_bo1 han_bo.name = 'BoBo' #更改属性 print(han_bo.name) #>>>BoBo
练习1:定义一个车类型,让他拥有对象属性:颜色、耗油、品牌。对象方法有:行驶
def main(): #为了书写规范,养成良好的习惯,通常把代码写在main函数里面,保护起来,外界不能直接调用. class Car(): # 注意:如果类有对象属性,对应的__init__方法不一定非要有参数给属性赋值 def __init__(self,color,brand): # self.color = 'yellow' 可以直接赋默认值 self.color = color self.you_hao = '12l/km' #给属性一个默认值 # self.brand = 'XFL' self.brand = brand def run(self): print('%s大黄蜂以200km/h的速度在高速上狂飙' % self.brand) # 申明对象--->雪佛兰大黄蜂 bumblebee = Car('Yellow','XFL') print(bumblebee.color) #>>>Yellow print('大黄蜂油耗',bumblebee.you_hao) #>>>大黄蜂油耗 12l/km #对象调用run这个方法:对象名.方法名 bumblebee.run() #>>>XFL大黄蜂以200km/h的速度在高速上狂飙 if __name__ == '__main__': main()
练习2.创建人这个类.
def main(): class Person(): # '人类共有的属性' def __init__(self,name,age): self.name = name self.age = age #'人类共有的行为方法' def run(self): # 在类的对象方法中使用对象的属性,直接通过self.属性名来使用 print('%s跑起来乌龟都追不上他' % self.name) # 创建第一个人 person_1 = Person('XiaoMing',18) print(person_1.name,person_1.age) #>>>XiaoMing 18 person_1.run() #>>>XiaoMing跑起来乌龟都追不上他 # 创建第二个人 person_2 = Person('HuaHua',20) print(person_2.name,person_2.age) #>>>HuaHua 20 person_2.run() #>>>HuaHua跑起来乌龟都追不上他 if __name__ == '__main__': main()
练习3.创建一个学生类
属性:1.名字,2.年龄 3.语文成绩 功能:1.修改学生成绩 2.展示学生成绩 创建学生类的对象,并且在创建的时候给名字和年龄赋初值。 通过方法去修改学生成绩和展示学生成绩 def main(): class Student(): def __init__(self,name,age): self.name = name self.age = age self.score = 0 #给语文成绩赋一个默认值 def change_score(self,new_score): #修改学生成绩 self.score = new_score def show(self): #展示学生成绩 print('%s的语文成绩是:%d' % (self.name,self.score)) stu1 = Student('WangYan',16) print(stu1.name, stu1.age) #>>>WangYan 16 stu1.change_score(99) #修改默认值0为99 stu1.show() #>>>WangYan的语文成绩是:99 if __name__ == '__main__': main()
练习4. 创建一个学生类
def main(): class Student(): def __init__(self, name, age): self.name = name self.age = age self.grades = [66, 56, 71, 77, 80, 59] #所有学科的成绩用一个容器列表来装,将低于60分的进行更改 def change_grades(self,new_grades): #修改学生成绩 self.grades = new_grades def pre_grade(self): #获取学生的平均成绩 total = sum(self.grades) return total / len(self.grades) def show_grade(self): #展示学生成绩 print('为了不让他挂科%s同学修改后的所有学科成绩:%s' % (self.name,self.grades)) stu1 = Student('XiaoMing',20) stu1.change_grades([66, 60, 71, 77, 80, 61]) #调用change_grades这个方法进行成绩更改 print(stu1.pre_grade()) #>>>69.166 stu1.show_grade() #>>>为了不让他挂科XiaoMing同学修改后的所有学科成绩:[66, 60, 71, 77, 80, 61] if __name__ == '__main__': main()