В настоящее время я пытаюсь написать многофайловую игру Python (2.6.5) с использованием PyGame. Проблема заключается в том, что один из файлов, «pyconsole.py», должен иметь возможность вызывать методы для экземпляров других объектов, импортируемых из основного файла «main.py». Проблема в том, что у меня есть список в главном файле для хранения экземпляров всех игровых объектов (корабля игрока, вражеских кораблей, станций и т. Д.), Но я не могу вызывать методы из этого списка в «pyconsole.py», несмотря на то, что я делаю from pyconsole import *
в «main.py» перед началом основного цикла. Разве это просто невозможно, и я должен вместо этого использовать M4, чтобы объединить каждый файл в один файл, а затем скомпилировать и протестировать / распространить его?
Пример:
bash$ cat test.py
#!/usr/bin/python
import math, distancefrom00
foo = 5
class BarClass:
def __init__(self):
self.baz = 10
def get(self):
print "The BAZ is ", self.baz
def switch(self)
self.baz = 15
self.get()
bar = BarClass()
def main():
bar.switch()
print distancefrom00.calculate([2, 4])
if __name__ == '__main__': main()
bash$ cat distancefrom00.py
#!/usr/bin/python
import math
import test
def calculate(otherpoint):
return str(math.hypot(otherpoint[0], otherpoint[1]))+" (foo = "+str(test.foo)+"; "+test.bar.get()+")"
bash$ python test.py
The BAZ is 15
The BAZ is 10
Traceback (most recent call last):
File "test.py", line 24, in <module>
if __name__ == '__main__': main()
File "test.py", line 22, in main
print distancefrom00.calculate([2, 4])
File "/home/archie/Development/Python/Import Test/distancefrom00.py", line 8, in calculate
return str(math.hypot(otherpoint[0], otherpoint[1]))+" (foo = "+str(test.foo)+"; "+test.bar.get()+")"
TypeError: cannot concatenate 'str' and 'NoneType' objects
Если мое несколько ограниченное понимание имен, классов и всего этого в Python здесь верно, NoneType означает, что имя test.bar.get()
- и, следовательно, test.bar
- ни к чему не присвоено.