【发布时间】:2014-08-18 11:36:53
【问题描述】:
如果问题背后的想法是错误的,我深表歉意:边走边学 Python。 因此,我编写了一个 python 模块,该模块用于数据库并获取许多其他模块使用的一堆标准数据,因此我认为将其构建为可重用模块是一种好习惯。 所以有一个类:
class TalkToOracle:
带有属性
gres = None
一堆其他函数,最后是一个主函数
def main():
有一句我不完全理解,但似乎在引用类时会自动运行 main 方法(?)
if __name__ == "__main__":
main()
main依次运行类中的函数,并将结果粘贴到属性:gres中
所有独立运行都很棒。该文件另存为 GetOraData.py 我现在想重用这段代码...... 在另一个 Python 模块中
import GetOraData
class GetInstances:
def oraInstanceData(self):
log.info('Getting instance routing data')
HAData = GetOraData.TalkToOracle()
log.info('debug1')
一切都从这里变成梨形。 我只想运行另一个模块,并访问属性 gres 中的结果。 我尝试了这个(以及我能想到的所有其他变化),但没有任何乐趣。 我觉得我缺少一些基本的东西。
HADATA.main()
log.info('debug2')
HADataSet = HAData.gres
log.info('debug3')
log.info('Query fetched ' + str(len(HADataSet)) + ' rows')
任何帮助将不胜感激。
经过一些工作,这里是修改后的代码,仍然会抛出错误
import logging
import time
import uuid
import GetOraData
from datetime import datetime
log = logging.getLogger()
log.setLevel('INFO')
class GetInstances:
def oraInstanceData(self):
log.info('Getting HA instance routing data')
HAData = GetOraData.main()
HADataSet = GetOraData.gres
log.info('Query fetched ' + str(len(HADataSet)) + ' HA Instances to query')
def main():
logging.basicConfig()
start = time.time()
#oracle routines
oraInstances = GetInstances()
oraInstances.oraInstanceData()
if __name__ == "__main__":
main()
error:AttributeError: 'module' 对象没有属性 'gres'
【问题讨论】:
-
您到底遇到了什么问题?这是 HADATA.main() 错字吗?您显示的代码是您实际使用的代码吗?
-
是的:尽管在下面给出的答案之后它现在已更改为: HAData = GetOraData.main() HADataSet = GetOraData.gres 出现错误 AttributeError: 'module' object has no attribute 'gres'
-
你只是在定义类的时候没有放 self 吧?
-
gres是如何定义的?在您的示例中,GetInstances真的需要成为一个类吗?