Python class 参数重复
Python class argument repetition
我正在编写一些 Python 代码来使用列表来存储订单数据。有什么办法可以避免重复使用相同的参数?
import datetime, pickle
class Order:
def __init__(self, order_number_legacy, platform, value, user_id):
self.order_number_legacy = order_number_legacy
self.platform = platform
self.value = value
self.user_id = user_id
def match(self, order_number_legacy):
return filter in self.order_number_legacy
def print(self):
return f"{self.order_number_legacy}, {self.platform}, {self.value}, {self.user_id}\n"
class Orders:
def __init__(self):
self.orders = []
def newOrder(self, order_number_legacy, platform, value, user_id):
self.orders.append(Order(order_number_legacy, platform, value, user_id))
def save(self):
with open("orders.data", "wb") as fh:
pickle.dump(self.orders, fh)
def load(self):
with open("orders.data", "rb") as fh:
self.orders = pickle.load(fh)
def print(self):
text = ""
for order in self.orders:
text += order.print()
return text
您可以看到我有几个参数实例“order_number_legacy、平台、值、user_id”。添加完所有 Order class 变量后,代码将重复更多参数。我原以为 Python 会有办法“整理”它...
您可以将 dataclass 用于 Order
。它会自动处理 __init__
函数:
from dataclasses import dataclass
@dataclass
class Order:
order_number_legacy: int
platform: str
# ...
我正在编写一些 Python 代码来使用列表来存储订单数据。有什么办法可以避免重复使用相同的参数?
import datetime, pickle
class Order:
def __init__(self, order_number_legacy, platform, value, user_id):
self.order_number_legacy = order_number_legacy
self.platform = platform
self.value = value
self.user_id = user_id
def match(self, order_number_legacy):
return filter in self.order_number_legacy
def print(self):
return f"{self.order_number_legacy}, {self.platform}, {self.value}, {self.user_id}\n"
class Orders:
def __init__(self):
self.orders = []
def newOrder(self, order_number_legacy, platform, value, user_id):
self.orders.append(Order(order_number_legacy, platform, value, user_id))
def save(self):
with open("orders.data", "wb") as fh:
pickle.dump(self.orders, fh)
def load(self):
with open("orders.data", "rb") as fh:
self.orders = pickle.load(fh)
def print(self):
text = ""
for order in self.orders:
text += order.print()
return text
您可以看到我有几个参数实例“order_number_legacy、平台、值、user_id”。添加完所有 Order class 变量后,代码将重复更多参数。我原以为 Python 会有办法“整理”它...
您可以将 dataclass 用于 Order
。它会自动处理 __init__
函数:
from dataclasses import dataclass
@dataclass
class Order:
order_number_legacy: int
platform: str
# ...