【发布时间】:2018-01-22 21:33:47
【问题描述】:
我在python中定义了一个抽象基类:
class calculator:
__metaclass__ = ABCMeta
@abstractmethod
def __init__(self, fileName):
path = './cartesians/'
onlyFiles = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]
for elem in list(onlyFiles):
test = elem.split('.')[0]
if test != fileName.split('.')[0]:
onlyFiles.remove(elem)
self.onlyFiles = onlyFiles
self.onlyFiles.sort()
@abstractmethod
def optimize(self):
pass
mopac 类继承自计算器类:
from calculator import *
class mopac(calculator):
def __init__(self, fileName):
self.test = "test"
super(mopac, self).__init__(fileName)
def optimize(calculator):
print self.test
for file in self.onlyFiles:
do stuff
在 main.py 中,我有:
from mopac import *
calc = mopac(inFile)
calc.optimize()
当我运行代码时,它告诉我:
File "main.py", line 50, in main
calc.optimize()
File "path/mopac.py", line 24, in optimize
print self.test
NameError: global name 'self' is not defined
我不明白为什么它在这里将 self 视为变量/属性。有人可以帮忙吗?如果我删除“print self.test”,那么它会给我同样的错误“self is not defined” with self.onlyFiles。
【问题讨论】:
标签: python class oop attributes self