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