python---面向对象2

本文详细探讨了Python的面向对象编程,包括构造方法与析构方法的使用,对象的str和repr方法,图书管理系统的实现,字符串format方法及其魔术方法,通过property装饰器管理类属性,实现类的切片和索引操作,以及重复、连接、成员操作符的使用,对象的比较大小基于长度计算,call方法的应用,并提供了相关参考代码。
摘要由CSDN通过智能技术生成
1构造方法与析构方法
from collections import Counter


class People(object):
    # 实例化对象时自动执行
    def __init__(self, name, age):
        # 把属性和对象名绑定在一起, 便于访问对象的属性.
        self.name = name
        self.age = age
        print("创建对象成功.......")
    #  析构函数, 当你删除对象时, 自动调用的方法。
    #   del 对象名或者程序执行结束之后
    def __del__(self):
        print("删除对象成功.......")


if __name__ == '__main__':
    # 创建对象
    p1 = People('fentiao', 12)
    #
    # del p1

这里写图片描述

2.对象str与repr方法
from collections import Counter


class People(object):
    # 实例化对象时自动执行
    def __init__(self, name, age):
        # 把属性和对象名绑定在一起, 便于访问对象的属性.
        self.name = name
        self.age = age
        print("创建对象成功.......")
    #  析构函数, 当你删除对象时, 自动调用的方法。
    #   del 对象名或者程序执行结束之后
    def __del__(self):
        print("删除对象成功.......")
    #  __str__和__repr__都是对对象的字符串显示, 使用场景不同.
    # 如果没有__str__的时候, 自动调用__repr__方法的内容.

    def __str__(self):
        # print(对象名)   print(str(对象名))
        # print('People(%s, %d)' %(self.name, self.age))
        return  'People(%s, %d)' %(self.name, self.age)

    def __repr__(self):
        # print(repr(对象名))  或者交互式环境中直接: 对象名
        return  "People(%s)" %(self.name)
    def __hello(self):
        print("hello")

    def world(self):
        self.__hello()

if __name__ == '__main__':
    # 创建对象
    p1 = People('fentiao', 12)
    print(p1)
    print(p1.__str__())
    p1.world()
    # print(str(p1))
    # print(repr(p1))

这里写图片描述

3.图书管理系统
# 假设每本书只有一本

class Book(object):
    def __init__(self, name, author, state, bookIndex):
        self.name = name
        self.author = author
        # 0:'已借出' 1:'未借出'
        self.state = state
        self.bookIndex = bookIndex


    def __str__(self):
        return  'Book(%s, %d)' %(self.name, self.state)

class   BookManage(object):
    # 存放所有书籍信息, 列表里面存放的是Book对象
    books = []

    def start(self):
        """图书管理系统初始化数据"""
        self.books.append(Book('python', 'Guido', 1, 'IN23445'))
        self.books.append(Book('java', 'Guido1', 1, 'IN23445'))
        self.books.append(Book('C++', 'Guido2', 1, 'IN23445'))
        print("初始化数据成功!")

    def Menu(self):
        """图书管理菜单栏"""
        while True:
            print("""
                        图书管理操作

            1). 添加书籍
            2). 删除数据
            3). 查询书籍

            4). 退出
            """)
            choice = input("请输入你的选择:")
            if choice == '1':
                self.addBook()
            elif choice == '2':
                self.delBook()
            elif choice == '3':
                self.isBookExist('python')
            elif choice == '4':
                exit()
            else:
                print("请输入正确的选择!")

    def addBook(self):
        print("添加书籍".center(0, '*'))
        name = input("书籍名称:")
        bObj = self.isBookExist(name)
        if bObj:
            print("书籍%s已经存在" %(bObj.name))
        else:
            self.books.append(Book(name,input("作者:"), 1, input("存放位置:")))
            print("书籍%s添加成功" %(name))

    def delBook(self):
        pass


    def borrowBook(self):
        pass

    def returnBook(self):
        pass

    def isBookExist(self, name):
        """检测书籍是否存在"""
        # 1. 依次遍历列表books里面的每个元素
        # 2. 如果有一个对象的书名和name相等, 那么存在;
        # 3. 如果遍历所有内容, 都没有发现书名与name相同, 书籍不存在;
        for book in self.books:
            if book
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值