Python类和对象的创建及应用

一、类和对象的定义及其组成

1.对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类

2.类是一种自定义数据类型,用于定义对象的属性和行为。类是对象的蓝图或模板,描述了对象应该具有的特征和行为;
对象:是类的实例化,对象具有类定义的属性和行为,并且可以通过调用类的方法来操作和访问这些属性。

类(Class)的构成:

                            ①类的名称:类名

                            ②类的属性:一组数据

                            ③类的方法:允许对进行操作的方法

二、定义类

1.demo:定义一个Car类

#定义类
class Car:
    #方法
    def getCarInfo(self):
        print('车轮子个数:%d,颜色%s'%(self.wheelNum,self.color))\

    def move(self):
        print("车正在移动...")

2.理解self

#定义一个类
class Animal:
    #方法
    def __init__(self,name):
        self.name=name
    def printname(self):
        print('名字为:%s'%self.name)

#定义一个函数
def myprint(animal):
    animal.printname()

dog1=Animal('O(∩_∩)O')
myprint(dog1)

运行结果:

Python类和对象的创建及应用_第1张图片

3.保护对象的属性

为更好保存属性安全,不能随意修改

①将属性定义为私有属性

②添加一个可以调用的方法,供调用

class people(object):
    def __init__(self,name):
        self.__name=name

    def getname(self):
        return self.__name
    def setname(self,newname):
        if len(newname)>=5:
            self.__name=newname
        else:
            print("error:名字长度需要大于或者等于5")

xiaoming=people("dongge")

xiaoming.setname("wanger")
print(xiaoming.getname())

xiaoming.setname("lisi")
print(xiaoming.getname())

运行结果:

Python类和对象的创建及应用_第2张图片

 

3.定义__str__()方法:

class Car:
    def __init__(self,newWheelnum,newColor):
        self.wheelNum=newWheelNum
        self.color=newColor

    def __str__(self):
        msg="我得颜色是" + self.color + "我有" + int(self.wheelNum) + "个轮胎"
        return msg

    def move(self):
        print('车在跑,目标:夏威夷')
BMW=Car(4,"白色")
print(BMW)

三、创建对象

#定义类
class car:
    #定义的方法
    #移动
    def move(self):
        print('车在奔跑.....')
    #鸣笛
    def toot(self):
        print("车在鸣笛...嘟嘟..")

#创建一个对象
BMW=car()
BMW.color='黑色'
BMW.wheelnum=4         #给对象添加属性
BMW.move()
BMW.toot()             #调用对象的方法
print(BMW.color)
print(BMW.wheelnum)

运行结果: 

Python类和对象的创建及应用_第3张图片

四、应用示例:

以”烤地瓜“为例的面对对象的编程

#cookedLevel:0~3表示还是生的,超过3表示半生不熟,超过5表示已经考好了,超过8表示已经成木炭了;
#cookedString:描述地瓜生熟程度
#condiments:地瓜的配料列表;
#示例方法
#cook():把地瓜烤一段时间
#addCondiments():给地瓜添加配料
#__init__():设置默认的属性
#__str__():让print的结果看起来更好一些

class SweetPotato:#这是烤地瓜的类
    #定义初始方法
    def __init__(self):
        self.cookedLevel=0
        self.cookedString="生的"
        self.condiments=[]

    #定制print时的显示内容
    def __str__(self):
        msg=self.cookedString+"地瓜"
        if len(self.condiments)>0:
            msg=msg+"("
            for temp in self.condiments:
                msg=msg+temp+","
            msg=msg.strip(",")

            msg=msg+")"
        return  msg
    #烤地瓜方法
    def cook(self, time):
        self.cookedLevel += time
        if self.cookedLevel > 8:
            self.cookedString = "烤成灰了"
        elif self.cookedLevel > 5:
            self.cookedString = "烤好了"
        elif self.cookedLevel > 3:
            self.cookedString = "半生不熟"
        else:
            self.cookedString = "生的"

    #添加配料
    def addCondiments(self,condiments):
        self.condiments.append(condiments)

#用来进行测试
mySweetPotato=SweetPotato()
print("--------有了一个地瓜,还没有烤--------")
print(mySweetPotato.cookedLevel)
print(mySweetPotato.cookedString)
print(mySweetPotato.condiments)
print("----------接下来要进行烤地瓜了---------")
print("---------地瓜经烤了4分钟----------")
mySweetPotato.cook(4)    #烤4分钟
print(mySweetPotato)
print("--------接下来要添加配料-番茄酱------")
mySweetPotato.addCondiments("番茄酱")
print(mySweetPotato)
print("-------地瓜又经烤了5分钟---------")
mySweetPotato.addCondiments("番茄酱")
print(mySweetPotato)
print("------接下来要添加配料-芥末酱-------")
mySweetPotato.addCondiments("芥末酱")
print(mySweetPotato)

运行结果:

Python类和对象的创建及应用_第4张图片

 五、应用示例2

#定义一个home类
class Home:
    def __init__(self,area):
        self.area=area  #房间剩余的可用面积
        #self.light='on'   #灯默认是亮的
        self.containsItem=[]

    def __str__(self):
        msg="当前房间可用面积为:"+str(self.area)
        if len(self.containsItem) > 0:
            msg=msg+"容纳的物品有:"
            for temp in self.containsItem:
                msg=msg+temp.getName()+","
            msg=msg.strip(",")

        return msg
    #容纳物品
    def accommodateItem(self,item):
        #如果可用面积大于物品的占用面积
        needArea=item.getUsedArea()
        if self.area > needArea:
            self.containsItem.append(item)
            self.area-=needArea
            print("ok:已经存放到房间中")
        else:
            print("err:房间可用面积为:%d,但是当前要存放的物品需要的面积为%d"%(self.area,needArea))


#定义bed类
class Bed:
    def __init__(self,area,name='床'):
        self.name=name
        self.area=area

    def __str__(self):
        msg='床的面积为:' + str(self.area)
        return msg
    #获取床的占用面积
    def getUsedArea(self):
        return self.area

    def getName(self):
        return self.name

#创建一个新家对象
newHome=Home(100)   #100米
print(newHome)

#创建一个床对象
newBed=Bed(20)
print(newBed)

#把床安放到家里
newHome.accommodateItem(newBed)
print(newHome)

#创建一个床对象
newBed2=Bed(30,'席梦思')
print(newBed2)

#把床安放到家里
newHome.accommodateItem(newBed2)
print(newHome)

运行结果:

Python类和对象的创建及应用_第5张图片

 

你可能感兴趣的:(Python,前端,javascript,开发语言,python)