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)分别表示图书和服装商品。要求使用面向对象的思想和多态的方式,设计并实现这三个类。
要求:
- 父类(Product)具有以下属性和方法:
- 属性:名称(name)、价格(price)
- 方法:获取商品名称(get_name())、获取商品价格(get_price())
- 子类(Book、Clothing)继承自父类,并分别具有以下特有的属性和方法:
- Book类特有属性:作者(author)、出版社(publisher)
- Clothing类特有属性:尺码(size)、颜色(color)
- 假设电商平台上有一本书名为《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 处),以及缺失的参数即可。
要求:
- 支付类(Payment)具有以下属性和方法:
- 方法:支付(pay(amount))
- 方法:退款(refund(order_id))
- 库存管理类(Inventory)具有以下属性和方法:
- 属性:库存数量(quantity)
- 方法:更新库存(update_inventory(quantity_change))
- 订单类(Order)具有以下属性和方法:
- 属性:订单号(order_id)和商品数量(quantity)
- 方法:下单(place_order(payment, inventory)),假设每件商品的单价都是100元
- 创建支付对象、库存管理对象和订单对象,并编写主程序模拟以下场景:
- 用户使用支付宝支付了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)