Python基础知识之面向对象编程介绍

面向对象编程介绍
面向对象(object-oriented;简称:oo):根据业务逻辑从上到下写代码,按人们认识客观世界的系统思维方式,采取基于对象(实体)的概念建立模型,模型客观世界分析、设计、实现软件的办法
面向对象编程(Object oriented programming-OOP):将数据与函数绑定到一起,进行封装,这样能够快速的开发程序,减少了重复代码的重写过程。是一种解决软件复用的设计和编程方法。这种方法把软件系统中相似的操作逻辑和操作应用数据、状态,以类的形式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。

1.类的构成

类(class)由3个部分构成
类的名称:类名
类的属性:一组数据
类的方法:允许对进行操作的方法(行为)

2.创建对象

在这里插入图片描述

总结:
BMW=Car(),这样就产生了一个Car的实例对象,此时也可以通过实例对象BMW来访问属性或者方法
第一次使用BMW.color=“黑色”表示给BMW这个对象添加属性,如果后面再次出现BMW.color=XXX表示对属性进行修改
BMW是一个对象,它拥有属性(数据)和方法(函数)
当创建一个对象时,就是用一个模子,来制造一个实物

3、init()方法

(1)使用方法
def 类名:
#初始化函数,用来完成一些默认的设定
def init():
pass
(2)init()方法的调用
#定义汽车类

class Car:
    def __init__(self, newWheelNum, newColor):
        self.wheelNum = newWheelNum
        self.color = newColor
        print('车在跑,目标:夏威夷')
#创建对象
BMW = Car(4, 'green')
print('车的颜色为:%s'    def move(self):
%BMW.color)
print('车轮子数量为:%d'%BMW.wheelNum)

结果:
车的颜色为:green 车轮子数量为:4

总结:
__init__()方法,在创建一个对象时默认被调用,不需要手动调用
__init__(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么__init__(self)中出了self作为第一个形参外,还需要2个形参,例如__init__(self,x,y)
__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去。

4、定义__str__()方法

在Python中方法名如果是__xxx__()的,那么就有特殊的功能,因此叫做“魔法”方法。
当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据。

应用:烤地瓜
class Sweetpotato:
    def __init__(self):
        self.cookedLevel=0
        self.cookedString="生的"
        self.condiments =[]
    def __str__(self):
        return "地瓜 状态为%s(%d),地瓜的调味品:%s"%(self.cookedString,self.cookedLevel,str(self.condiments))
    def cook(self,cooked_tiom):
        self.cookedLevel+=cooked_tiom
        if self.cookedLevel>=0 and self.cookedLevel<3:
            self.cookedString="生的"
        elif self.cookedLevel>=3 and self.cookedLevel<5:
            self.cookedString="半生不熟"
        elif self.cookedLevel>=5 and self.cookedLevel<8:
            self.cookedString="熟了"
        elif self.cookedLevel>=8 :
            self.cookedString="烧焦了"
    def addCondiments(self,item):
        self.condiments.append(item)
    
di_gua=Sweetpotato()
di_gua.cook(1)
di_gua.addCondiments("辣椒")
print(di_gua)
di_gua.cook(2)
di_gua.addCondiments("孜然")
print(di_gua)

结果: 地瓜 状态为生的(1),地瓜的调味品:[‘辣椒’] 地瓜 状态为半生不熟(3),地瓜的调味品:[‘辣椒’, ‘孜然’] 地瓜
状态为熟了(5),地瓜的调味品:[‘辣椒’, ‘孜然’, ‘芥末’] 地瓜 状态为烧焦了(8),地瓜的调味品:[‘辣椒’, ‘孜然’,
‘芥末’, ‘大蒜’]

应用:存放家居
#面积:area ,可用面积:left_area,户型:info,地址:addr,contain_items:物品名称
class Home:
    def __init__(self,new_area,new_info,new_addr):
        self.area=new_area
        self.info=new_info
        self.addr=new_addr
        self.left_area=new_area
        self.contain_items=[]
        
    def __str__(self):
        msg="房子的总面积:%d,房子的剩余面积:%d,房子的户型:%s,房子的地址:%s"%(self.area,self.left_area,self.info,self.addr)
        msg+="房子的当前物品:%s"%(str(self.contain_items))
        return msg
    def add_item(self,item):
        #self.left_area -=item.area
        #self.contain_items.append(item.name)

        self.left_area -=item.get_area()
        self.contain_items.append(item.get_name())
class Bad:
    def __init__(self,new_name,new_area):
        self.name=new_name
        self.area=new_area
    def __str__(self):
        return "%s的占地面积:%d"%(self.name,self.area)
    def get_area(self):
       return self.area
    def get_name(self):
       return self.name
    
fangzi=Home(135,"三室一厅","上海市 浦东区 999号")
print(fangzi)

chuang=Bad("双人床",4)
print(chuang)

chuang1=Bad("三人床",5)
fangzi.add_item(chuang1)
print(fangzi)

fangzi.add_item(chuang)
print(fangzi)

结果: 房子的总面积:135,房子的剩余面积:135,房子的户型:三室一厅,房子的地址:上海市 浦东区 999号房子的当前物品:[]
双人床的占地面积:4 房子的总面积:135,房子的剩余面积:130,房子的户型:三室一厅,房子的地址:上海市 浦东区
999号房子的当前物品:[‘三人床’] 房子的总面积:135,房子的剩余面积:126,房子的户型:三室一厅,房子的地址:上海市 浦东区
999号房子的当前物品:[‘三人床’, ‘双人床’]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值