Введение
Изображение, которое вы хотите описать процесс сгорания
Чтобы отсортировать элементы, я создал
- классы для описания вещества (ур.класс Fuel)
- класс, который описывает сгорание (уравнение сгорания)
main.py
для запуска примера
Python Files
properties.py
class SolidProp:
def __init__(self,ua):
self._ultimate = Ultimate(ua)
@property
def ultimate(self):
return self._ultimate
class Ultimate:
def __init__(self,ua: dict):
self._comp = ua
@property
def comp(self):
return self._comp
combustion.py
from properties import *
class Combustion:
def __init__(self,ultimate):
self.fuel = SolidProp(ua=ultimate)
main.py
from combustion import *
burner = Combustion({'CH4':0.75, 'C2H4':0.25})
Описание проблемы
консоль ipython
В консоли ipython (в bash) следующее не распознается автоматически (но его можно вызвать):
Python 3.7.2 (default, Dec 29 2018, 06:19:36)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: run 'main.py'
In [2]: burner.fuel.ultimate.comp
Out[2]: {'CH4': 0.75, 'C2H4': 0.25}
Это как-то связано с тем, что *.ultimate
определяется через декоратор в properties.py
(см. @property
), но я хотел бы иметь возможность получать *.ultimate.comp
автозаполнением в консоли ipython, поэтомулюди могут работать с ним интуитивно.
Пример
burner.fuel.ultimate
распознано burner.fuel.ultimate.comp
НЕ распознано
Я не вижу никаких методов или свойств, кроме burner.fuel.ultimate
, в консоли ipython.Из-за этого люди не могут интуитивно работать с ним, когда они не знают, что эти методы существуют.
Примечание: ipython-консоль IDE pycharm работает отлично!console
Запуск его в консоли python:
Python 3.7.2 (default, Dec 29 2018, 06:19:36)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exec(open("main.py").read())
>>> burner.fuel.ultimate.comp
{'CH4': 0.75, 'C2H4': 0.25}
Работает нормально.Но почему не в консоли ipython из терминала?