python面向对象练习题四

1.第一题

假设有一个电商平台,需要设计一个商品类(Product)用于表示网站上的商品信息,
同时还需要设计一个会员类(Member)用于表示平台上的会员信息。
要求使用面向对象的思想和多继承的方式,设计并实现这两个类。
要求:
商品类(Product)具有以下属性和方法:
属性:名称(product_name)、价格(product_price)
方法:获取商品名称(get_product_name())、获取商品价格(get_product_price())
会员类(Member)具有以下属性和方法:
属性:用户名(name)、会员等级(level)
方法:获取用户名(get_name())、获取会员等级(get_level())
会员商品类(MemberProduct)应该继承自商品类和会员类,并具有以下特有的属性和方法:
特有属性:折扣(discount)
特有方法:获取折扣价格(get_discount_price()),根据会员等级和商品价格计算商品的折扣价格。
假设有一个会员“张三”(username = "zhangsan")是VIP会员(level = "VIP"),
购买了一件名为“iPhone12”的商品,价格为5999元,折扣为0.8。
请设计并实现上述类,并编写主程序输出以下信息:
张三购买的商品名称、价格和折扣价格。
参考如下方式创建实例
zhangsan = Member("张三", "VIP")
iphone12 = MemberProduct("iPhone12", 5999, 0.8, zhangsan)
class Product():
    def __init__(self, product_name, product_price):
        self.product_name = product_name
        self.product_price = product_price

    def get_product_name(self):
        return self.product_name

    def get_product_price(self):
        return self.product_price


class Member():
    def __init__(self, name, level):
        self.name = name
        self.level = level

    def get_name(self):
        return self.name

    def get_level(self):
        return self.level


class MemberProduct(Product, Member):
    def __init__(self, product_name, product_price, discount, member):
        super().__init__(product_name, product_price)
        super(Product, self).__init__(member.name, member.level)
        self.discount = discount

    def get_discount_price(self):
        return self.product_price * self.discount

    # 创建会员实例
zhangsan = Member("张三", "VIP")
# 创建会员商品实例
iphone12 = MemberProduct("iPhone12", 5999, 0.8, zhangsan)
# 输出所需信息
print(f"{zhangsan.get_name()}购买的商品名称:{iphone12.get_product_name()}")
print(f"价格:{iphone12.get_product_price()}元")
print(f"折扣价格:{iphone12.get_discount_price()}元")

2.第二题

假设我们正在开发一个电商平台,需要设计一个父类(Product)用于表示商品信息,同时还需要设计两个子类(Book、Clothing)分别表示图书和服装商品。要求使用面向对象的思想和多态的方式,设计并实现这三个类。

要求:

  1. 父类(Product)具有以下属性和方法:
    • 属性:名称(name)、价格(price)
    • 方法:获取商品名称(get_name())、获取商品价格(get_price())
  2. 子类(Book、Clothing)继承自父类,并分别具有以下特有的属性和方法:
    • Book类特有属性:作者(author)、出版社(publisher)
    • Clothing类特有属性:尺码(size)、颜色(color)
  3. 假设电商平台上有一本书名为《Python入门教程》(name = "Python入门教程"),价格为50元,作者为"张三",出版社为"A出版社";还有一件衣服名为"时尚T恤"(name = "时尚T恤"),价格为100元,尺码为"M",颜色为"红色"。请设计并实现上述类,并编写主程序输出以下信息:
    • 《Python入门教程》的名称、价格、作者和出版社;
    • "时尚T恤"的名称、价格、尺码和颜色。

参考如下方式创建实例
python_book = Book("Python入门教程", 50, "张三", "A出版社")
fashion_clothing = Clothing("时尚T恤", 100, "M", "红色")

class Product(object):
    def __init__(self,name,price):
        self.name=name
        self.price=price

    def get_name(self):
        return self.name

    def get_price(self):
        return self.price

class Book(Product):
    def __init__(self,name,price,author,publisher):
        super().__init__(name,price)
        self.author=author
        self.publisher=publisher

    def get_author(self):
        return self.author

    def get_publishe(self):
        return self.publisher

class Clothing(Product):
    def __init__(self,name,price,size,color):
        super().__init__(name,price)
        self.size=size
        self.color=color

    def get_size(self):
        return self.size

    def get_color(self):
        return self.color

python_book = Book("Python入门教程", 50, "张三", "A出版社")
fashion_clothing = Clothing("时尚T恤", 100, "M", "红色")
print(python_book.get_name())
print(python_book.get_price())
print(python_book.get_author())
print(python_book.get_publishe())
print('<------------------------------------------>')
print(fashion_clothing.get_name())
print(fashion_clothing.get_price())
print(fashion_clothing.get_size())
print(fashion_clothing.get_color())

3.第三题

假设你正在设计一个电商平台的订单支付系统和库存管理系统。用户在下单时,需要选择支付方式,并且对应的商品库存数量会相应减少。
请设计并实现这些系统的类和相关操作,补齐函数实现(写有 # TODO 处),以及缺失的参数即可。

要求:

  1. 支付类(Payment)具有以下属性和方法:
    • 方法:支付(pay(amount))
    • 方法:退款(refund(order_id))
  2. 库存管理类(Inventory)具有以下属性和方法:
    • 属性:库存数量(quantity)
    • 方法:更新库存(update_inventory(quantity_change))
  3. 订单类(Order)具有以下属性和方法:
    • 属性:订单号(order_id)和商品数量(quantity)
    • 方法:下单(place_order(payment, inventory)),假设每件商品的单价都是100元
  4. 创建支付对象、库存管理对象和订单对象,并编写主程序模拟以下场景:
    • 用户使用支付宝支付了200元
    • 用户使用微信支付了100元
    • 分别输出支付结果和库存管理对象的最新库存数量。

用户使用支付宝支付 200 元,购买了2件商品
支付结果: 支付宝支付 200 元成功!
当前库存数量: 8

用户使用微信支付 100 元,购买了1件商品
支付结果: 微信支付 100 元成功!
当前库存数量:7

class Payment:  
    def pay(self, amount):  
        pass  
      
    def refund(self, order_id):  
        pass  
  
class Alipay(Payment):  
    def pay(self, amount):  
        return f"支付宝支付 {amount} 元成功!"  
      
    def refund(self, order_id):  
        return f"支付宝退款 {order_id} 成功!"  
  
class WeChatPay(Payment):  
    def pay(self, amount):  
        return f"微信支付 {amount} 元成功!"  
      
    def refund(self, order_id):  
        return f"微信支付退款 {order_id} 成功!"  
  
class Inventory:  
    def __init__(self, quantity):  
        self.quantity = quantity  
  
    def update_inventory(self, quantity_change):  
        self.quantity -= quantity_change  
  
class Order:  
    def __init__(self, order_id, quantity):  
        self.order_id = order_id  
        self.quantity = quantity  
  
    def place_order(self, payment_method, inventory):  
        total_amount = self.quantity * 100  # 假设每件商品的单价是100元  
        payment_result = payment_method.pay(total_amount)  
        inventory.update_inventory(self.quantity)  
        return payment_result  
  
# 创建支付对象、库存对象和订单对象  
alipay = Alipay()  
wechat_pay = WeChatPay()  
inventory = Inventory(10)  
  
order1 = Order("12345", 2)  
order2 = Order("67890", 1)  
  
# 模拟用户下单并输出结果  
print("用户使用支付宝支付 200 元,购买了2件商品")  
payment_result1 = order1.place_order(alipay, inventory)  
print("支付结果:", payment_result1)  
print("当前库存数量:", inventory.quantity)  
  
print("用户使用微信支付 100 元,购买了1件商品")  
payment_result2 = order2.place_order(wechat_pay, inventory)  
print("支付结果:", payment_result2)  
print("当前库存数量:", inventory.quantity)

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值