.定义一个商品类(Goods),使用__init__方法在创建某个商品对象时,为其添加name、price属性,通过商品类创建手机(phone)对象,为其赋予name(HUAWEI)、price(5000)的属性值。Python代码及注释
时间: 2024-01-15 17:03:47 浏览: 79
下面是Python代码及注释:
```python
class Goods:
def __init__(self, name, price):
"""
商品类,包含name和price属性
:param name: 商品名称
:param price: 商品价格
"""
self.name = name
self.price = price
# 创建手机对象
phone = Goods("HUAWEI", 5000)
```
以上代码定义了一个名为Goods的类,包含了初始化方法`__init__`,可以在创建对象时为其添加名称和价格属性。接着使用Goods类创建了一个名为phone的对象,并为其赋予了名称为“HUAWEI”和价格为5000的属性值。
相关问题
1.访问 http://10.0.200.3:8089/goods_list,完成以下操作: (1)实现商品类,至少包含商品名称、商品价格、商品封面地址等属性(2)编写爬虫实现抓取全部商品,分别使用商品类保存(3)后台打印抓取的商品总条数及商品详情 写出代码
首先,由于这是一个编程请求,我们需要使用Python的requests库来发送HTTP请求,并结合BeautifulSoup库解析HTML内容。假设我们已经安装了这两个库,以下是使用Python完成这个任务的一个简化示例:
```python
import requests
from bs4 import BeautifulSoup
from typing import List
# 定义商品类
class Product:
def __init__(self, name: str, price: float, cover_url: str):
self.name = name
self.price = price
self.cover_url = cover_url
def parse_html(url: str) -> List[Product]:
# 发送GET请求
response = requests.get(url)
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
# 假设商品列表在一个名为"product-list"的div里
product_list = soup.find('div', {'id': 'product-list'})
products = []
for item in product_list.find_all('div', class_='product-item'):
name = item.find('h2').text
price = float(item.find('span', class_='price').text)
cover_url = item.find('img')['src']
products.append(Product(name, price, cover_url))
return products
def print_products(products: List[Product]):
total_items = len(products)
print(f"共抓取到 {total_items} 条商品信息")
for i, product in enumerate(products, start=1):
print(f"商品 {i}: 名称 - {product.name}, 价格 - {product.price}, 封面 - {product.cover_url}")
if __name__ == "__main__":
url = "http://10.0.200.3:8089/goods_list"
products = parse_html(url)
print_products(products)
```
请注意,实际的URL和网页结构可能会有所不同,你需要根据实际网页调整代码中的标签名和类名。同时,此代码未处理可能出现的网络异常或其他错误,实际应用中需要添加相应的错误处理。
class Good: def init(self,id,num): self.id=id self.__num=num self.gooddict={} self.goodlist=[] def add(self): # 进货批处理 while True: id=input("请输入需要购买的商品(0-退出):") if id == "0": return num = eval(input(f"请输入 {id:s} 的进货数目:")) price = eval(input(f"请输入 {id:s} 的进货价格:")) goods=Goods(id,num,price) self.goodsdict[id] = goods print(goodsdict) class xiaoshou: def init(self,id): self.id=id self.xiaosdict = {} self.xiaoslist=[] def xiaos(self): while True: id = input("请输入商品(0-退出):") if id == "0": return num = int(input("请输入数量:")) price=eval(input("请输入商品价格:")) self.xiaoslist.append([price, num]) self.xiaosdict[id]=xiaoslist @property # 定义setter访问器 def num(self): return self.__num @num.setter # 定义只写访问器 def num(self, num): # amount 为负数表示取款 if num < 0 and num > self.__num: print("商品的数目不足!") return -1 self.__num += num return self.__num def mainmenu(self): while True: print("" * 45) print(" 1.进货系统 2.销售系统") print("" * 45) sele = int(input("请输入功能号:")) if sele == 1: self.add() elif sele == 2: self.add() elif sele == 0: return如何优化代码,请输出优化后的代码
以下是优化后的代码:
```
class Good:
def __init__(self, id, num):
self.id = id
self.num = num
self.goodsdict = {}
def add(self):
# 进货批处理
while True:
id = input("请输入需要购买的商品(0-退出):")
if id == "0":
return
if id in self.goodsdict:
num = int(input(f"请输入 {id:s} 的进货数目:"))
price = eval(input(f"请输入 {id:s} 的进货价格:"))
self.goodsdict[id].num += num
else:
num = int(input(f"请输入 {id:s} 的进货数目:"))
price = eval(input(f"请输入 {id:s} 的进货价格:"))
goods = Good(id, num)
self.goodsdict[id] = goods
print(self.goodsdict)
class Xiaoshou:
def __init__(self, id):
self.id = id
self.xiaosdict = {}
def xiaos(self):
while True:
id = input("请输入商品(0-退出):")
if id == "0":
return
num = int(input("请输入数量:"))
price = eval(input("请输入商品价格:"))
if id in self.xiaosdict:
self.xiaosdict[id].append([price, num])
else:
self.xiaosdict[id] = [[price, num]]
@property
def num(self):
return self.__num
@num.setter
def num(self, num):
# amount 为负数表示取款
if not isinstance(num, int):
print("请输入数字类型!")
return -1
if num < 0 and num > self.__num:
print("商品的数目不足!")
return -1
self.__num += num
return self.__num
def mainmenu():
good = Good("good1", 100)
xiaoshou = Xiaoshou("xiaoshou1")
while True:
print("" * 45)
print(" 1.进货系统 2.销售系统")
print("" * 45)
sele = int(input("请输入功能号:"))
if sele == 1:
good.add()
elif sele == 2:
xiaoshou.xiaos()
elif sele == 0:
return
if __name__ == "__main__":
mainmenu()
```
优化点:
1. 将 Good 类的 goodlist 属性删除,因为没有使用到。
2. 在 Good 类的 add 方法中,如果输入的 id 不存在于商品字典中,应该创建一个新的 Goods 对象,并将商品字典中的 id 和新的 Goods 对象关联起来。
3. 在 Good 类的 add 方法中,如果输入的 id 已经存在于商品字典中,应该将新的进货数目和价格加入到已有的 Goods 对象中。
4. 在 Xiaoshou 类的 xiaos 方法中,如果输入的 id 已经存在于销售字典中,应该将新的销售数量和价格加入到已有的销售列表中。
5. 在 Good 类的 num 属性的 setter 方法中,添加对输入参数类型的检查。
6. 在 mainmenu 函数中,创建 Good 和 Xiaoshou 对象,并在循环中调用相应的方法。
7. 添加 `if __name__ == "__main__":` 判断,使得代码可以被其他模块导入时不执行。
阅读全文