在python中维护单独的类文件

在python中维护单独的类文件,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我必须承认,我是python的新手。这个问题与代码组织更相关 例如,下面是app.py文件 import backtracker as bt # Create a class class TestTracker(bt.Strategy): def log(self, txt, dt=None): ''' Logging function for this strategy ''' dt = dt or self.datas[0].datetime.da

我必须承认,我是python的新手。这个问题与代码组织更相关

例如,下面是app.py文件

import backtracker as bt
# Create a class

class TestTracker(bt.Strategy):

    def log(self, txt, dt=None):
        ''' Logging function for this strategy '''
        dt = dt or self.datas[0].datetime.date(0)
        print('%s, %s' % (dt.isoformat(), txt))

    def __init__(self):
        self.dataclose = self.datas[0].close
        self.datapoint = self.datas[0]

    def next(self):
        self.log('Close, %2f' %self.dataclose[0])
现在,我想将类文件分离到testStrategy.py并将其导入app.py。文件夹结构看起来像这样

|
|-strategies
| |-testStrategy.py
|-app.py
如何在新类文件中引用基类
bt.strategy

谢谢你的帮助。

有两种方法可以做到这一点

将文件夹策略添加到
sys.path
,然后导入类

# This gives you the folder in which current file resides
BASE_DIR = os.path.dirname(os.path.abspath(__file__))

    if BASE_DIR + '/strategies' not in sys.path:
        sys.path.append(BASE_DIR + '/strategies')
    from testStrategy import TestTracker
在每个文件夹中添加
\uuuu init\uuuu.py
,然后将代码用作python包。这允许您按以下方式导入

import strategies.testStrategy.TestTracker

但是要小心。

当你尝试你所拥有的东西时,会出现什么问题?@DavidZ我收到一个错误
bt。策略在类文件中不可用,这是真的。我的问题是将
bt.strategy
传递到此新类文件。当所有代码都在
app.py
中时,不会发生此错误?看起来我误解了您的问题。backtracker位于哪里?我真的不确定这里有什么问题。如果可以在任何地方导入
backtracker
,那么也包括testStrategy.py。因此,
将回溯器导入为bt
应该可以正常工作。