对象=属性(变量)+方法(函数) #静态的特征称为属性,动态的行为称为方法
对象:就是看得见摸得着的东西
类:指模版,用模版创造出来的东西叫对象
类(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)
来源:https://www.cnblogs.com/jzc0018/p/8094123.html