Python面向对象知识总结(二)

类和对象 

对象是类创造出来真实存在的

必须先有类,后有对象。

定义类:

class 类名():
    代码

实例

#定义类( 洗衣机)
class washer():
    #定义方法(行为),洗衣服
    def wash(self):#self就是创建对象的实例化本身在这里面就wash
        print("wash")
    #创建洗衣机对象
wash=washer()
#输出表示,前面表示在washer这个类中,后面表示他的地址
print(wash)
#调用对象的方法
wash.wash()

self是指调用对象本身

添加对象属性,和获取对象属性

属性就是事物所具有的特征,比如长宽高。

对象的属性可以在类外进行添加和获取,也可以在类内进行。

在类外添加属性

对象.属性名=值

在类内获取属性

在类内获取对象的属性:self.属性名

class washer():#类外的属性,另一个对象不一定有
    def wash(self):
        print("wash")
        print("类中的对象的属性值为",self.brand)#这里面有self,那基本就是wash.brand
wash=washer()
wash.brand="小天鹅"
print("对象中的,",wash.brand)
wash.wash()

特殊方法

__init__方法

会自动使用,来初始化类内属性

带参数的__init__方法,初始化对象

类中的方法,第一个参数必须是self

class Washer():#类内的属性,所有对象都有
    def __init__(self,width,height):#__init__主要是为了能在类中进行对象属性的初始化,而且它能够自动执行。
        self.width=width
        self.height=height
        print("执行啦")
    def info_print(self):
        print(f"self.width={self.width},self.height={self.height}")
washer1=Washer(500,600)
washer1.info_print()

__str__方法

输出对象本身的时候才去调用。详情请看代码注释。

class washer():
    def __init__(self, width, height):  # __init__主要是为了能在类中进行对象属性的初始化,而且它能够自动执行。
        self.width=width
        self.height=height
        print("执行啦")
    def __str__(self):
        return f"self.width={self.width},self.height={self.height}"
washer1=washer(500,500)
print(washer1)#之前未加字符串的时候,输出的就是对象的地址,没有什么意义了。加上之后就是self.width=500,self.height=500

__del__方法

删除对象的时候,会调用该对象的类中的del方法

class washer():
    def __init__(self, width, height):  # __init__主要是为了能在类中进行对象属性的初始化,而且它能够自动执行。
        self.width=width
        self.height=height
        print("执行啦")
    def __str__(self):
        return f"self.width={self.width},self.height={self.height}"
    def __del__(self):#在删除的时候执行,告诉你删除了已经。
        print(f"删除对象{self}")
washer1=washer(500,500)
print(washer1)#之前未加字符串的时候,输出的就是对象的地址,没有什么意义了。加上之后就是self.width=500,self.height=500
del washer1

下面是一个具体实例,往房子里面搬东西,直到最后一件家具大于剩余面积后终止。

#定义家具类
class Furniture():
    #用init方法,初始对象属性。
    def __init__(self,name,area):
        #属性:名称
        self.name=name
        #属性:面积
        self.area=area
class Home():
    def __init__(self,address,area):
        self.address=address
        self.area=area
        self.free_area=area
        self.furniture=[]
    def __str__(self):
        return f"房子的地理位置{self.address},房子的面积是{self.area},房子的剩余面积是{self.free_area},家具有{self.furniture}"
    def add_furniture(self,furn):
        if furn.area<=self.free_area:
            self.furniture.append(furn.name)
            self.free_area-=furn.area
        else:
            print("家具面积大于剩余面积,不可以放进去")
home1=Home("北京",120)
# print(home1)#房子的地理位置北京,房子的面积是120,房子的剩余面积是120,家具有[]
furn1=Furniture('桌子',33)
home1.add_furniture(furn1)
print(home1)

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值