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)

运行结果:

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())

运行结果:

 

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)

运行结果: 

四、应用示例:

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

#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)

运行结果:

 五、应用示例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)

运行结果:

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
面向对象编程是一种重要的编程思想,在Python中也可以很好地应用。下面是一些Python中面向对象编程的应用: 1. 定义类:使用class关键字定义一个类,类中可以包含属性和方法。 2. 创建实例:使用类名加括号的方式创建一个实例,这个实例就是类的一个对象。 3. 继承:使用父类的属性和方法,创建一个子类。 4. 多态:不同对象可以对同一个方法做出不同的响应。 5. 封装:隐藏对象的属性和方法,只暴露必要的接口。 6. 类型检查:使用isinstance函数检查对象的类型。 下面是一个简单的例子: ``` class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print("Hello, my name is", self.name) class Student(Person): def __init__(self, name, age, grade): super().__init__(name, age) self.grade = grade def say_hello(self): print("Hello, my name is", self.name, "and I am in grade", self.grade) person = Person("Alice", 25) person.say_hello() student = Student("Bob", 15, 9) student.say_hello() print(isinstance(person, Person)) print(isinstance(student, Person)) print(isinstance(student, Student)) ``` 这个例子定义了一个Person类和一个Student类,Student类继承自Person类。Person类有一个名字和年龄属性,以及一个say_hello方法;Student类在此基础上增加了一个grade属性,并且重写了say_hello方法。最后使用isinstance函数检查对象的类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值