欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python基础入门之十五 —— 类与对象

程序员文章站 2022-03-10 11:45:37
一、定义 类是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物。 对象是类创建出来的真实存在的事物。 开发中,先有类,再有对象。eg:学生类、学生甲对象 #定义洗衣机类 """ class类名(): 代码 """ class Washer(): def wash(self ......

一、定义

  • 是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物。
  • 对象是类创建出来的真实存在的事物。
  • 开发中,先有类,再有对象。eg:学生类、学生甲对象
#定义洗衣机类
"""
class类名():
代码
"""
class washer():
def wash(self):  # self指得是调用该函数的对象。
print('能洗衣服')

#创建对象
#对象名=类名()
heier=washer()

print(heier)
heier.wash()

 

二、魔法方法

在python中,__ xx __()的函数叫做魔法方法,指的是具有特殊功能的函数。

p.s:两边都是两个下划线

1、__init__()

初始化对象

class washer():
    def __init__(self,high,width):
        self.high=high
        self.width=width
    def wath(self):

        print(f'洗衣机的宽度{self.width},')
        print(f'洗衣机高度{self.high}')

heier1 = washer(10,20)
heier1.wath()"""
洗衣机的宽度20,
洗衣机高度10
"""

2、__str__()

在使用print输出对象的时候,默认打印对象的内存地址。

如果类定义了__str__方法,那么就会打印从这个方法中return的数据

class washer():
    def __init__(self):
        self.high=500
    def __str__(self):
        return '解释说明,类的说明或对象状态的说明'

heier1 = washer()
print(heier1)

"""
解释说明,类的说明或对象状态的说明
"""  

3、__del__()

删除对象时调用

class washer():
    def __init__(self):
        self.high=500
    def __del__(self):
        print('对象删除')

heier1 = washer()

"""
对象删除
"""

三、案例实现

1、烤地瓜

class sweetpotato():
    def __init__(self):
        self.time = 0
        self.static = '生的'
        self.condiments = []

    def cook(self, time):
        while true:
            self.time += 1
            if self.time>time:
                break
            if 0 <= self.time < 3:
                self.static = '生的'
            elif 3 <= self.time < 5:
                self.static = '半生不熟'
            elif 5 <= self.time < 8:
                self.static = '熟了'
            elif 8 <= self.time:
                self.static = '糊了'
            print(self)

    def __str__(self):
        return f'地瓜烤了{self.time}分钟,状态为{self.static}'

    def __del__(self):
        print('删了删了')


digua1 = sweetpotato()
digua1.cook(10)

2、搬家具

class furniture():
    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, item):
        if item.area <= self.free_area:
            self.furniture.append(item.name)
            self.free_area -= item.area
        else:
            print('家具太大')

bed = furniture('双人床',6)
safa = furniture('沙发',6)
jia=home('北京',1000)
print(jia)

jia.add_furniture(bed)
print(jia)

jia.add_furniture(safa)
print(jia)
"""
房子地理位置北京,房屋面积是1000,房屋剩余面积是1000,家具[]
房子地理位置北京,房屋面积是1000,房屋剩余面积是994,家具['双人床']
房子地理位置北京,房屋面积是1000,房屋剩余面积是988,家具['双人床', '沙发']
"""