Ошибка с самовывозом функций в коде python - PullRequest
1 голос
/ 16 апреля 2020

Когда я вызываю основной файл, функции проверки, указанные ниже, не выполняются должным образом. Какие изменения я должен внести в основной файл, чтобы методы проверки выполнялись сами?

x = input('enter a number')

def mainfile(data):
  def validate(self,data):
    if int(data) > 3:
     print( 'greater than 3')
  def validate1(self, data):
    if int(data) > 2:
      print( 'greater than 2')

mainfile(x);

Ответы [ 3 ]

3 голосов
/ 16 апреля 2020

Во-первых, эти методы не принадлежат классу, поэтому ключевое слово self здесь не требуется и должно быть удалено, чтобы избежать ошибки типа из-за отсутствия позиционных аргументов.

Во-вторых, вы не вызываете вложенные функции validate и validate1, поэтому они никогда не выполняются. Вы должны напрямую вызывать их из функции mainfile. Например, validate(data) validate1(data)

1 голос
/ 16 апреля 2020

Вы определили функции validate и validate1, но они не вызываются, если вы используете только основной файл функции. Кроме того, вам нужно только ключевое слово «self» в контексте классов, так что вы можете просто оставить его здесь.

1 голос
/ 16 апреля 2020

Вы только определяете validate, вы не звоните это:

def mainfile(data):
  def validate(self,data):
    if int(data) > 3:
     print( 'greater than 3')
  def validate1(self, data):
    if int(data) > 2:
      print( 'greater than 2')

  # You could, e.g., call them here:
  validate(data)
  validate1(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...