【python】类(12)


  • 面向对象和面向过程的区别
  • 对象和类
  • 创建类
  • 定义对象
  • 类的三要素(对象、属性、方法)

    1 类、对象、方法

# 定义一个类
class Car:
    def drive(self):
        print('我正在开车') 
    def turnover(self):
        print('翻车了')
# 创建一个对象
momo = Car()
# 调用类方法
momo.drive()
momo.turnover()

结果为

我正在开车
翻车了

2 类的属性


可以在类中定义属性,也可以在对象中添加属性

class Car:
    def drive(selt):
        print('我正在开车')

    def turnover(self):
        print('翻车了')

#创建一个对象
xiao_jie_jie=Car()
xiao_jie_jie.drive()#调用xiao_jie_jie指向的对象的方法
xiao_jie_jie.turnover()

#添加属性,属性就是变量
xiao_jie_jie.name = '莫莫'
xiao_jie_jie.age = 18
print ("%s的年龄是%d"%(xiao_jie_jie.name,xiao_jie_jie.age))

结果为

我正在开车
翻车了
莫莫的年龄是18

__init__

class Car:
    def drive(self):
        print ("driving")
    def turnover(self):
        print ("turnover")
    def __init__(self,name,age):  
        self.age = age
        self.name  = name
    def feature(self):
        print("%s的年龄是%d"%(self.name,self.age))
momo = Car("MM",18)
momo.drive()
momo.turnover()
momo.feature()

结果为

driving
turnover
MM的年龄是18

3 例子(煮面)

class Cook_instant_noodles:

    def __init__(self):
        self.cookedState = '生的'
        self.cookedLevel = 0

    def __str__(self):#相当于打印
        return '泡面状态:%s(%d)'%(self.cookedState,self.cookedLevel)

    def cook(self,cooked_time):
        if self.cookedLevel >= 0 and self.cookedLevel < 3:
            self.cookedState = '还没熟'
        elif self.cookedLevel >= 3 and self.cookedLevel < 5:
            self.cookedState = '半生不熟'
        elif self.cookedLevel >= 5 and self.cookedLevel < 8:
            self.cookedState = '煮熟了'
        elif self.cookedLevel >= 8:
            self.cookedState = '煮糊了'

#创建了一个泡面对象
instant_noodles = Cook_instant_noodles()
print(instant_noodles,"\n")

#开始煮泡面
instant_noodles.cook(2)
print(instant_noodles)

instant_noodles.cook(4)
print(instant_noodles)

instant_noodles.cook(6)
print(instant_noodles)

instant_noodles.cook(9)
print(instant_noodles)

结果为

泡面状态:生的(0) 

泡面状态:还没熟(0)
泡面状态:还没熟(0)
泡面状态:还没熟(0)
泡面状态:还没熟(0)

有问题

class Cook_instant_noodles:

    def __init__(self):
        self.cookedState = '生的'
        self.cookedLevel = 0

    def __str__(self):
        return '泡面状态:%s(%d)'%(self.cookedState,self.cookedLevel)

    def cook(self,cooked_time):
        self.cookedLevel = cooked_time
        if cooked_time >= 0 and cooked_time < 3:
            self.cookedState = '还没熟'
        elif cooked_time >= 3 and cooked_time < 5:
            self.cookedState = '半生不熟'
        elif cooked_time >= 5 and cooked_time < 8:
            self.cookedState = '煮熟了'
        elif cooked_time >= 8:
            self.cookedState = '煮糊了'

#创建了一个泡面对象
instant_noodles = Cook_instant_noodles()
print(instant_noodles,"\n")

#开始煮泡面
instant_noodles.cook(2)
print(instant_noodles)

instant_noodles.cook(4)
print(instant_noodles)

instant_noodles.cook(6)
print(instant_noodles)

instant_noodles.cook(9)
print(instant_noodles)

结果为

泡面状态:生的(0) 

泡面状态:还没熟(2)
泡面状态:半生不熟(4)
泡面状态:煮熟了(6)
泡面状态:煮糊了(9)

OK了


监控每分钟的状态

class Cook_instant_noodles:

    def __init__(self):
        self.cookedState = '生的'
        self.cookedLevel = 0

    def __str__(self):
        return '泡面状态:%s(%d)'%(self.cookedState,self.cookedLevel)

    def cook(self,cooked_time):
        self.cookedLevel = cooked_time
        if cooked_time >= 0 and cooked_time < 3:
            self.cookedState = '还没熟'
        elif cooked_time >= 3 and cooked_time < 5:
            self.cookedState = '半生不熟'
        elif cooked_time >= 5 and cooked_time < 8:
            self.cookedState = '煮熟了'
        elif cooked_time >= 8:
            self.cookedState = '煮糊了'
    def cook_state(self,i): #监控每分钟的状态
        for i in range(0,10):
            instant_noodles.cook(i)
            print(instant_noodles)

#创建了一个泡面对象
instant_noodles = Cook_instant_noodles()
print(instant_noodles,"\n")
#开始煮泡面
instant_noodles.cook_state(10)

结果为

泡面状态:生的(0) 

泡面状态:还没熟(0)
泡面状态:还没熟(1)
泡面状态:还没熟(2)
泡面状态:半生不熟(3)
泡面状态:半生不熟(4)
泡面状态:煮熟了(5)
泡面状态:煮熟了(6)
泡面状态:煮熟了(7)
泡面状态:煮糊了(8)
泡面状态:煮糊了(9)

加入佐料

class Cook_instant_noodles:

    def __init__(self):
        self.cookedState = '生的'
        self.cookedLevel = 0
        self.condiments = []
        self.J = ['a','b','c','d','e','f','g','h','i','j']
        self.A = [1,2,3,4,5,6,7,8,9,10]

    def __str__(self):
        return '泡面状态:%s(%d),佐料有%s'%(self.cookedState,self.cookedLevel,str(self.condiments))

    def cook(self,cooked_time):
        self.cookedLevel = cooked_time
        if cooked_time >= 0 and cooked_time < 3:
            self.cookedState = '还没熟'
        elif cooked_time >= 3 and cooked_time < 5:
            self.cookedState = '半生不熟'
        elif cooked_time >= 5 and cooked_time < 8:
            self.cookedState = '煮熟了'
        elif cooked_time >= 8:
            self.cookedState = '煮糊了'

    def addcondiments(self,thing):
        self.condiments.append(thing)

    def cook_state(self,A,J): #监控每分钟的状态
        A = self.A
        J = self.J
        for i,j in zip(A,J):
            instant_noodles.cook(i)
            self.addcondiments(j)
            print(instant_noodles)

#创建了一个泡面对象
instant_noodles = Cook_instant_noodles()
print(instant_noodles,"\n")
#开始煮泡面
instant_noodles.cook_state(10,'')

结果为

泡面状态:生的(0),佐料有[] 

泡面状态:还没熟(1),佐料有['a']
泡面状态:还没熟(2),佐料有['a', 'b']
泡面状态:半生不熟(3),佐料有['a', 'b', 'c']
泡面状态:半生不熟(4),佐料有['a', 'b', 'c', 'd']
泡面状态:煮熟了(5),佐料有['a', 'b', 'c', 'd', 'e']
泡面状态:煮熟了(6),佐料有['a', 'b', 'c', 'd', 'e', 'f']
泡面状态:煮熟了(7),佐料有['a', 'b', 'c', 'd', 'e', 'f', 'g']
泡面状态:煮糊了(8),佐料有['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
泡面状态:煮糊了(9),佐料有['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
泡面状态:煮糊了(10),佐料有['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

参考
【1】Python面向对象编程从零开始(1)——从没对象到有对象

【2】Python面向对象编程从零开始(2)—— 与对象相互了解

【3】Python面向对象编程从零开始(3)—— 小姐姐请客上篇

【4】Python面向对象编程从零开始(4)—— 小姐姐请客下篇

猜你喜欢

转载自blog.csdn.net/bryant_meng/article/details/80256214