Python:如何将这 2 个重载构造函数合并为 1 个构造函数

标签 python sql

我有一个名为 Portfolio 的类,现在我有 2 个构造函数(尽管我刚刚发现你不能在 python 中重载函数)所以我必须合并这 2 个构造函数

我是一位经验丰富的Python程序员,但是这种合并两个非常矛盾的构造函数真的让我很头疼! :P

第一个构造函数:
+ 目的是创建 .db 文件并初始化类变量
- 初始化类成员变量
- 检查路径和名称为 db_path 的文件是否存在:如果存在,我们退出,因为我们不想覆盖现有数据库,因此我们返回 None
- 我们创建数据库(sql 数据库)并设置必要的表
- 导入投资组合数据(创建日期等)

第二个构造函数:
+ 目的是从现有的 SQL 数据库文件导入所有股票数据并初始化变量
- 初始化类成员变量
- 检查路径和名称为 db_path 的文件是否存在:如果不存在,我们退出,因为我们不想覆盖现有数据库,因此我们返回 None
- 我们调用该函数从数据库导入所有股票
- 导入投资组合数据(创建日期等)

如何合并这两个构造函数,呃,为什么 python 不允许重载

class Portfolio:
""" Portfolio class implementation """

# Class Variables:

# self.db_path
# self.app_parent
# self.tracking_stocks
# self.registered_stocks
# self.total_purchase_exp
# self.ytd_roi
# self.cash_reserve


# Class Functions:

def __init__( self, _app_parent, _db_path, stock_list ):
    """ Constructor: """

    self.db_path            = _db_path
    self.app_parent         = _app_parent
    self.tracking_stocks    = []
    self.registered_stocks  = []
    self.total_purchase_exp = 0
    self.ytd_roi            = 0
    self.cash_reserve       = 500

    if database_exists( self.db_path ):
        return None

    self.create_database()
    self.import_portfolio_data()

    for stock_data in stock_list:

        self.add_stock( stock_data )


def __init__( self, _app_parent, _db_path ):
    """ Constructor: """

    self.db_path            = _db_path
    self.app_parent         = _app_parent
    self.tracking_stocks    = []
    self.registered_stocks  = []
    self.total_purchase_exp = 0
    self.ytd_roi            = 0
    self.cash_reserve       = 500

    if not self.database_exists( self.db_path ):
        return None

    self.import_portfolio_data()
    self.import_stocks()

最佳答案

为什么这一切都必须发生在构造函数中?

您可以构造您的对象,然后对其调用单独的方法以导入库存列表或创建数据库。

将其总结在 Builder pattern 中可能适合您现有的设计。

关于Python:如何将这 2 个重载构造函数合并为 1 个构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4495003/

相关文章:

python - 如何在 python 中将元组转换为 float ?

python - 需要帮助才能让 jinja2 正常工作

sql - 如何查询具有 2 个外键的表?

sql - 日期差异查询

mysql - 如何在 Mysql 中计算多天时间窗口中的一个值的平均值?

在 Postgres 中创建模式的 Python 未显示

python - 如何增量训练 nltk 分类器

python - 名称错误 django send_mail

mysql - 查找 1 小时时间戳与按小时、日期、周和月分组之间的差距 - MySql

sql - 'local-name()' 需要单例(或空序列)T-SQL Xquery