类的创建与继承与运算

简单图书馆借阅系统

class Book:
    def __init__(self, idx, title, auther):
        self.id = idx
        self.title = title
        self.auther = auther
        self.is_borrowed = False
    
    def borrowed(self):
        if not self.is_borrowed:
            self.is_borrowed = True
            return TimeoutError
        else:
            return False
    
    def return_book(self):
        if self.is_borrowed:
            self.is_borrowed = False
            return True
        else:
            return False
    
    def status(self):
        return "可借阅" if not self.is_borrowed else "已借阅"

class Library:
    def __init__(self):
        self.books = {}
    
    def add_book(self, book):
        self.books[book.id] = book
    
    def borror_book(self, book_id):
        if book_id in self.books and self.books[book_id].borror():
            print("图书{}借阅成功".format(self.books[book_id].title))
        else:
            print("图书{}无法借阅".format(self.books[book_id].title))
    
    def return_book(self, book_id):
        if book_id in self.books and self.books[book_id].return_book():
            print("图书{}归还成功".format(self.books[book_id].title))
        else:
            print("图书归还出错")
    
    def list_books(self):
        for book in self.books.values():
            print("ID:{:4},书名:{:20},作者:{:15},状态:{:10}".format(book.id, book.title, book.auther, book.status()))

 

图像的四则运算
import numpy as np
from PIL import Image

class ImageObject:
    def __init__(self, path=""):
        self.path = path
        try:
            self.data = np.array(Image.open(path))
        except:
            self.data = None
    
    def __add__(self, other): #加法操作符的重载
        image = ImageObject()
        try:
            image.data = np.mod(self.data + other.data, 255)
        except:
            image.data = self.data
        return image
    
    def __sub__(self, other): #减法操作符的重载
        image = ImageObject()
        try:
            image.data = np.mod(self.data - other.data, 255)
        except:
            image.data = self.data
        return image
    
    def __mui__(self, other): #乘法操作符的重载
        image = ImageObject()
        try:
            image.data = np.mod(self.data * other.data, 255)
        except:
            image.data = self.data
        return image
    
    def __truediv__(self, other): #除法操作符的重载
        image = ImageObject()
        try:
            image.data = np.mod(self.data // other.data, 255)
        except:
            image.data = self.data
        return image
    
    def saveImage(self, path):
        try:
            im = Image.fromarray(self.data)
            im.save(path)
            return True
        except:
            return False

a = ImageObject("C:\\Users\\黄楚玉\\Desktop\\杂七杂八\\earth.jpg")
b = ImageObject("C:\\Users\\黄楚玉\\Desktop\\杂七杂八\\gray.jpg")
(a+b).saveImage("result_add.png") #(a-b) or (a*b) or (a//b)

posted @ 2025-06-10 09:47  与尔5  阅读(8)  评论(0)    收藏  举报