实例化时自动调用 Python class 方法的最佳方法
Best way to call Python class methods automatically upon instantiation
我有一个机器学习算法,它涉及一系列步骤,例如清理数据、准备训练数据等。每个步骤都存储在 python class 的单独方法中。我想知道构造我的 class 的最佳实践方法是什么,以便在 class 实例化时自动执行这些步骤。
这是我所做的(代码是说明性的,但这种方法适用于真正的算法)。感觉有点笨拙。有没有更优雅的方式?
class Kaggle():
"""
An algorithm
"""
def __init__( self ):
self.bar = 1
def step_one( self, some_text_data ):
self.bar = 1 ** 2
# Do some data cleaning
# return processed data
def step_two( self ):
foo = step_one(baz)
# do some more processing
def step_three( self ):
bar = step_two()
# output results
def run( self ):
self.step_one()
self.step_two()
self.step_three()
if __name__ == "__main__":
kaggle = Kaggle()
kaggle.run()
将所有调用放入您的 __init__
方法中。这不是你想要达到的目标吗?您可以添加一个带有默认值的标志,这样您就可以不 运行 测试。
def __init__( self, runtests=True ):
self.bar = 1
if runtests:
self.step_one()
self.step_two()
self.step_three()
如果您的目标是让对象成为 "automatically executed upon class instantiation",只需将 self.run()
放入 init:
def __init__(self):
self.bar = 1
self.run()
我有一个机器学习算法,它涉及一系列步骤,例如清理数据、准备训练数据等。每个步骤都存储在 python class 的单独方法中。我想知道构造我的 class 的最佳实践方法是什么,以便在 class 实例化时自动执行这些步骤。
这是我所做的(代码是说明性的,但这种方法适用于真正的算法)。感觉有点笨拙。有没有更优雅的方式?
class Kaggle():
"""
An algorithm
"""
def __init__( self ):
self.bar = 1
def step_one( self, some_text_data ):
self.bar = 1 ** 2
# Do some data cleaning
# return processed data
def step_two( self ):
foo = step_one(baz)
# do some more processing
def step_three( self ):
bar = step_two()
# output results
def run( self ):
self.step_one()
self.step_two()
self.step_three()
if __name__ == "__main__":
kaggle = Kaggle()
kaggle.run()
将所有调用放入您的 __init__
方法中。这不是你想要达到的目标吗?您可以添加一个带有默认值的标志,这样您就可以不 运行 测试。
def __init__( self, runtests=True ):
self.bar = 1
if runtests:
self.step_one()
self.step_two()
self.step_three()
如果您的目标是让对象成为 "automatically executed upon class instantiation",只需将 self.run()
放入 init:
def __init__(self):
self.bar = 1
self.run()