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 # ***谁调用就执行谁,这就是实例化方法