第十九节课:面向对象的基础
1 # 本节课大纲: 2 ''' 3 1- 类与实例 4 2- 实例属性与静态属性 5 3- 实例方法与静态方法 6 面向对象的语言 VS 面向对象的设计 7 @面向对象的设计:是一种设计思路 8 @面向对象的语言:提供对面向对象设计的语言支持 9 @非面向对象的语言也能实现面向对象的设计思路 10 ''' 11 12 # 1- 类与实例 13 ''' 14 类:是一类具有相同特征的事物的统称 15 显示不存在--是一种抽象的概念--人类,鸟类 16 ''' 17 #python中类的定义: 18 # class ClassName: 19 # 'class documentation string' 20 # class_suite 21 # #关键字 class,类名(通常首字母大写) 22 # class Tiger: 23 # classname='tiger' 24 # #属性(attribute):classname是一个属性.定义类的例子: 25 # class Person: #注意,类名首字母一定要大写 26 # pass #到此就定义好了一个类 27 ''' 28 实例:在这个类里面具体存在的个体 29 实例是类的具体实例化体现 30 注意:对象的概念就更大了,类和实例都包含在对象里面,一切皆可为对象 31 ''' 32 #python中实例的创建: 33 # python类: 34 # class Tiger: 35 # classname='tiger' 36 # # 实例化: 37 # t1=Tiger() 38 # # 实例化之后可以访问其属性: 39 # t1.classname 40 # 怎么创建实例?很简单:类名() 如: 41 class Person: #创建了一个类 42 pass 43 p1=Person() #将类实例化,为了方便后期操作,通常用一个变量去接收实例化的类 44 45 # 2- 属性: 46 ''' 47 类:类的属性包含特征和行为 48 1- 特征--俗称 49 术语--属性 50 本质--变量 51 2- 行为--俗称 52 术语--方法 53 本质--函数 54 属性: 55 1-概念:本质是类里面的一个变量.俗称特征 56 2-静态属性--这个属性是每个实例都有的,如nickname:人类 57 3-实例属性--不同了类有不同的属性,这个叫实例属性,如张三李四王五,身高体重哪些 58 ''' 59 # *1 创建实例: 60 # class Person: #创建了一个类 61 # name='人类'#类属性,这个类所有的实例都是一样的--共有的 62 # #对于实例来说,有些实例的不同实例是不一样的,实例属性属于实例,如p1是20岁,p2是30岁 63 # p1=Person() #将类实例化,为了方便后期操作,通常用一个变量去接收实例化的类 64 # print(p1.name) #调用方法:实例.属性 65 # print(Person.name)#调用方法:类.属性 66 # *2 静态(类)属性 调用方法: 实例.属性 ; 类.属性(上一行属于实例.属性) 67 # class Person: #创建了一个类 68 # name='人类' 69 # def __init__(self): #初始化方法,创建实例会自动调用 70 # print('我执行啦!',self) #打印得:我执行啦! <__main__.Person object at 0x0000014B166F9588> 71 # p1=Person()#这里创建了p1,打印出来和定义里面的self一致,说明实例化哪个东西,哪个东西就是self本身 72 # p2=Person()#这里创建了p2,打印出来的地址不一样,这个地址在:0x000001E335339518 73 # # print(p1,p2) #打印得:<__main__.Person object at 0x0000014B166F9588> 74 # class Person: #创建了一个类 75 # nickname='人类' 76 # def __init__(self,name1,age1): #初始化方法,创建实例会自动调用. 77 # self.name=name1 #注意,self作用特别大,当是用p1接收实例化,self代表p1,如果是用p2实例化,self代表p2 78 # self.age=age1 #这两个步骤完成了传实参 79 # p1=Person('tom',23) 80 # p2=Person('升职加薪',66) 81 # # 2- 实例属性 82 # print(p1.name) #打印得:tom 83 # print(p2.name,p2.age) #打印得:升职加薪 66 84 # # print(p1.nickname) 85 86 # 3- 对象的方法: 87 ''' 88 *1概念--通过定义在类里面的函数 89 *2实例方法--每个具体实例相关的方法---本质是一个函数 90 *3静态方法--共有的方法,与每个具体实例无关---本质是一个函数 91 ''' 92 class Person: 93 Nickname='人类' 94 def __init__(self,iname,iage,iweight): 95 self.name=iname 96 self.age=iage 97 self.weight=iweight 98 def eat(self): #创建一个实例方法 99 self.weight +=10 100 print(str(self.name)+'今年有'+str(self.age)+'岁了,他现在在吃饭,现在有'+str(self.weight)+'斤了') #这里是为了调用 101 p1=Person('张三',23,120) 102 p2=Person('李四',24,130) 103 print(p1.Nickname) 104 p1.eat()#如果是p1调用,打印得:张三今年有23岁了,他现在在吃饭,现在有130斤了 105 p2.eat()#如果是p2调用,打印得:李四今年有24岁了,他现在在吃饭,现在有140斤了 106 # ***谁调用就执行谁,这就是实例化方法