python学习笔记——类、对象、烤地瓜练习

雨燕双飞 提交于 2020-02-29 17:06:44

对象=属性(变量)+方法(函数)    #静态的特征称为属性,动态的行为称为方法

对象:就是看得见摸得着的东西

类:指模版,用模版创造出来的东西叫对象

类(class)由3部分构成

  1.类的名称:类名

  2.类的属性:一组数据

  3.类的方法:允许对进行操作的方法(行为)

 1 class Cat:  #类名的第一个字母要大写,既大驼峰法
 2     #属性(就是变量)
 3 
 4     #方法
 5     def eat(self): #函数在类里面定义就叫方法
 6         print("猫在吃鱼.....")
 7     def drint(self):
 8         print("猫在喝kele......")
 9 #定义类就相当于创建模版,接下来要通过模版创建对象
10 
11 tom = Cat()  # Cat() 就是创建对象,要给创建的对象附上变量名tom
12 #创建对象--->即在内存中开辟一块区域--->返回对象的引用并附上变量名tom---->tom所指向的就是内存中开辟的那块区域的对象
13 
14 #调用对象中的方法,类里有什么方法,对象里就有什么方法
15 tom.eat()
16 tom.drint()
17 
18 #给类添加属性(给tom指向的对象)
19 #给tom对象添加属性,因为tom指向内存中开辟的那块区域,因此属性也添加到那块区域
20 tom.name = "汤姆"
21 tom.age = 40
22 
23 
24 #获取属性的第一种方法
25 print("%s的年龄是:%d"%(tom.name,tom.age))
26 
27 #获取属性的第二种方法
28 在Cat类中定义方法:
29     def introduce(self):
30         print("%s的年龄是%d"%(self.name,self.age))#此处用self,是方便其他对象调用,                                                     谁去调用这个方法,self就指向谁自己(这就是self的用处)
31 #调用方法
32 tom.introduce()
33 
34 #创建新的对象
35 lanmao = Cat()  #用类Cat,创建一个新对象取名叫lanmao,即在内存中开辟了一块新的区域来创建对象,并附上变量名lanmao
36 
37 #给新对象添加属性
38 lanmao.name = "蓝猫"
39 lanmao.age = 10
40 
41 #调用方法
42 lanmao.introduce() #此时调用的是Cat类中的introduce方法,这时就能体现出self的作用了,因为tom对象和lanmao对象都在调用,                       所有谁调用self就指向谁,并调用它里面的属性

魔法方法 __init__:

#初始化对象,就是创建完对象后python会自动调用的方法,

class Cat:
             
    def __init__(self,new_name,new_age):  #此括号里的是形参
        self.name = new_name
        self.age = new_age
tom = Cat("汤姆",40)   #此括号里的是实参,“汤姆”传递给了new_name,  40传递给了new_age

 

烤地瓜练习:

 1 class SweetPotato:
 2     """定义了一个名字是地瓜的类”””
 3     def __init__(self):
 4         self.cookedString = "生的"
 5         self.cookedLevel = 0
 6         self.condiments = [] #为了能够存储多个数据,往往在开发中让一个属性的列表
 7     def __str__(self):
 8         return "地瓜 状态:%s(%d),添加的佐料有:%s"%(self.cookedString,sdlf.cookedLevel,str(self.condiments))
 9     def cook(self,cooked_time):
10         #因为这个方法被调用了多次,为了能够在一次调用这个方法的时候,能够获取上一次调用这个方法时的cooked_time
11         #所以 需要在此,把cooked_time保存到这个对象的属性中,因为属性不会随着方法的调用而结束           (一个方法被调用的时候,是可以用局部变量来保存数据的,但是当这个方法定义结束之后,这个方法中的所有数据就没有了)
12         self.cookedLevel +=cooked_time
13         
14         if self.cookedLevel >=0 and self.cookedLevel <3:
15             self.cookString = "生的"
16         elif self.cookedLevel >=3 and self.cookedLevel <5:
17             self.cookString = "半生不熟"
18         elif self.cookenLvevl >=5 and self.cookedLevel <8:
19             self.cookenString = “熟了”
20         elif self.cookenLevel >8:
21             self.cookenString = “糊了”
22 
23     def addCondiments(self,item):
24         #因为item这个变量指向了一个 佐料,所以 接下来需要将item放到append里面
25         self.condiments.append(item)
26 
27 #创建了一个地瓜对象
28 di_gua = SweetPotato()
29 print(di_gua)
30 
31 #开始烤地瓜
32 di_gua.cook(1)
33 print(di_gua)
34 di_gua.cook(1)
35 print(di_gua)
36 di_gua.addCondiments("大蒜")
37 di_gua.cook(1)
38 print(di_gua)
39 di_gua.addCondiments("番茄酱")
40 di_gua.cook(1)
41 print(di_gua)
42 di_gua.addCondiments("芥末")
43 di_gua.cook(1)
44 print(di_gua)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!