Я новичок в Python, в основном из Java-программирования.
В настоящее время я размышляю над тем, как создаются классы в Python.
Я понимаю, что __init__()
: как конструктор в Java. Однако иногда классы python не имеют метода __init__()
, который в этом случае я предполагаю, что существует конструктор по умолчанию, как и в Java?
Еще одна вещь, которая затрудняет переход от Java к python, заключается в том, что в Java вы должны определить все поля класса с типом, а иногда и с начальным значением. В python все это просто исчезает, и разработчики могут просто определять новые переменные класса на лету.
Например, я столкнулся с такой программой:
class A(Command.UICommand):
FIELDS = [
Field( 'runTimeStepSummary', BOOL_TYPE)
]
def __init__(self, runTimeStepSummary=False):
self.runTimeStepSummary = runTimeStepSummary
"""Other methods"""
def execute(self, cont, result):
self.timeStepSummaries = {}
""" other code"""
То, что смущает (и немного раздражает меня), состоит в том, что этот класс A не имеет поля под названием timeStepSummaries, но как разработчик в середине метода просто определяет новое поле? или мое понимание неверно?
Итак, чтобы быть ясным, мой вопрос заключается в Python, можем ли мы динамически определять новые поля для класса во время выполнения, как в этом примере, или эта переменная timeStepSummaries является экземпляром java-частной переменной?
EDIT: я использую python 2.7