zoukankan      html  css  js  c++  java
  • python基础入门之十五 —— 类与对象

    一、定义

    • 是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物。
    • 对象是类创建出来的真实存在的事物。
    • 开发中,先有类,再有对象。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,家具['双人床', '沙发']
    """
  • 相关阅读:
    set集合
    作业(2)
    字典
    列表功能
    字符串
    while循环
    pb加密转换成C#
    NET在64位系統使用32位oracle客户端访问数据库
    SQL Server中查找包含某个文本的存储过程
    SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户
  • 原文地址:https://www.cnblogs.com/LynHome/p/12597281.html
Copyright © 2011-2022 走看看