栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python学习笔记(7)-类和对象——内置方法与封装案例

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python学习笔记(7)-类和对象——内置方法与封装案例

内置方法和属性
  1. del :方法类型 对象被从内存中销毁前,会被 自动 调用

如果希望在对象被销毁前,再做一些事情,可以考虑以下__del__方法

class Cat:
    def __init__(self,newname):
        self.name = newname
        print("%s 来了"% self.name)

    def __del__(self):
        print("%s 去了"% self.name)
#使用类名()创建对象的时候,会自动调用初始化方法__init__
tom = Cat("Tom")
print("tom.name")
#del tom #假如在这里删除tom就会销毁,从而调用__del__这个内置方法
print("-" * 50)#tom是一个全局变量,所以程序运行完才销毁

结果:

Tom 来了
tom.name
--------------------------------------------------
Tom 去了
  1. str :返回对象的描述信息,print函数输出使用

如果在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以利用__str__这个内置方法了。

class Cat:
    def __init__(self,newname):
        self.name = newname
        print("%s 来了"% self.name)

    def __del__(self):
        print("%s 去了"% self.name)
    def __str__(self):#必须返回一个字符串
        return "我是小猫"
#使用类名()创建对象的时候,会自动调用初始化方法__init__
tom = Cat("Tom")
print(tom)#本来是返回内存地址,现在返回的是str返回的字符串

结果:

Tom 来了
我是小猫
Tom 去了
面向对象的封装案例 封装
  1. 封装是面向对象变成的一大特点
  2. 面向对象变成的第一步–将属性和方法封装倒一个抽象的中
  3. 外界使用类创建对象,然后让对象调用方法
  4. 对象方法的细节都被封装在类的内部
小明爱跑步 1 封装
  • 封装是面向对象编程的一大特点
  • 面向对象编程的第一步–将属性和方法 封装到一个抽象的类中
  • 外界使用类创建对象,然后让对象调用方法
  • 对象方法的细节都被 封装在类的内部
小明爱跑步
  • 小明 体重75公斤
  • 小明每次跑步会减肥0.5公斤
  • 小明每次吃东西体重增加1公斤
class Person:
    def __init__(self,name,weight):
        #self.属性 = 形参
        self.name = name
        self.weight = weight

    def __str__(self):
        return "我的名字叫 %s 体重是 %.2f 公斤" % (self.name,self.weight)

    def run(self):
        print("%s爱跑步"%self.name)
        self.weight -= 0.5

    def eat(self):
        print("%s 是吃货,吃完这顿在减肥"% self.name)


xiaoming = Person("小明",75.0)
xiaoming.run()
xiaoming.eat()
print(xiaoming)
摆放家具

需求

添加家具的需求

  1. 判断家具的面积是否超过剩余面积,如果超过,提示不能添加这件家具
  2. 将家具的名称追加到家具名称列表中
  3. 用房子的剩余面积-家具面积
class HouseItem:
    def __init__(self,name,area):
        self.name = name
        self.area = area

    def __str__(self):
        return "[%s] 占地 %.2f" % (self.name,self.area)


class House:
    def __init__(self,house_type,area):
        self.house_type = house_type
        self.area = area
        #剩余面积和家具列表(只需要外部传递的才需要定义形参)
        self.free_area = area
        self.item_list = []

    def add_item(self,item):
        print("要添加%s"% item)
        if item.area > self.free_area:#1.判断家具的面积
            print("%s 的面积太大了,无法添加")
            return #下方的代码不再执行
        self.item_list.append(item.name)#2.将家具的名称添加到列表中
        self.free_area -= item.area#3.计算剩余面积
    def __str__(self):
        return ("户型是 %s n总面积是 %.2f n 剩余面积是%.2fn家具名称列表是 %s"%
                (self.house_type,self.area,
                self.free_area,self.item_list))


bed = HouseItem("席梦思",4)
chest = HouseItem("衣柜",2)
table = HouseItem("餐桌",1.5)

print(bed)
print(chest)
print(table)

my_home = House("两室一厅",60)
my_home.add_item(bed)
my_home.add_item(chest)
print(my_home)

结果:

[席梦思] 占地 4.00
[衣柜] 占地 2.00
[餐桌] 占地 1.50
要添加[席梦思] 占地 4.00
要添加[衣柜] 占地 2.00
户型是 两室一厅 
总面积是 60.00 
 剩余面积是54.00
家具名称列表是 ['席梦思', '衣柜']
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/859450.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号