Код Python работает в одном .py файле, но не в новом [duplicate]

Self определяется во время компиляции, а не во время выполнения. В вашем коде Self в точности эквивалентен UIViewController, а не «подкласс, который вызывает это». Это вернет UIViewController, и вызывающий должен будет as перевести его в правый подкласс. Я предполагаю, что это то, чего вы пытались избежать (хотя это обычный способ какао), поэтому просто возвращение UIViewController, вероятно, является лучшим решением).

Примечание: вы должны не следует называть функцию initialize в любом случае. Это существующая функция класса NSObject и в лучшем случае приведет к путанице. Ошибки в худшем случае.

Но если вы хотите избежать as вызывающего абонента, подклассом обычно не является инструмент для добавьте функциональность в Swift. Вместо этого вам обычно нужны дженерики и протоколы. В этом случае вам нужны только дженерики.

func instantiateViewController<VC: UIViewController>(storyboardName: String, storyboardId: String) -> VC {
    let storyboad = UIStoryboard(name name: storyboardName, bundle: nil)
    let controller = storyboad.instantiateViewControllerWithIdentifier(storyboardId) as! VC

    return controller
}

Это не метод класса. Это просто функция. Здесь нет необходимости в классе.

let tvc: UITableViewController = instantiateViewController(name: name, storyboardId: storyboardId)
143
задан martineau 12 October 2016 в 13:40
поделиться

9 ответов

Вы можете изменить, какой питон вы используете с вашей IDE, если вы уже загрузили python 3.x, его не должно быть слишком сложно переключить. Но ваш скрипт отлично работает на python 3.x, я просто изменил бы

print ("your name is" + input_variable)

на

print ("your name is", input_variable)

. Поскольку в запятой он печатает с пробелом между your name is и независимо от введенного пользователем. И: если вы используете 2.7, просто используйте raw_input вместо ввода.

0
ответ дан Adil B 20 August 2018 в 08:42
поделиться

Для всех, кто может столкнуться с этой проблемой, выясняется, что даже если вы включили #!/usr/bin/env python3 в начало вашего скрипта, shebang игнорируется, если файл не является исполняемым.

To определите, является ли ваш файл исполняемым:

  • запустите ./filename.py из командной строки
  • , если вы получите -bash: ./filename.py: Permission denied, запустите chmod a+x filename.py
  • снова запустить ./filename.py

Если вы включили import sys; print(sys.version), как предложил Кевин, теперь вы увидите, что скрипт интерпретируется python3

2
ответ дан automonous 20 August 2018 в 08:42
поделиться

Вы можете либо сделать:

x = raw_input("enter your name")
print "your name is %s " % x

, либо:

x = str(input("enter your name"))
print "your name is %s" % x
214
ответ дан Community 20 August 2018 в 08:42
поделиться
  • 1
    Я знаю, что этот вопрос является дублером, поэтому здесь так мало голосов, но это фантастический ответ. Вы объясняете теорию, даете практический пример того, что мы, возможно, не подумали о новинках, и дадим простое решение. Спасибо. – PopularIsn'tRight 6 November 2014 в 04:03
  • 2
    raw_input исправил проблему для меня – Spencer Goff 8 December 2017 в 18:14
  • 3

Вы используете Python 2, а не Python 3. Для этого в Python 2 используйте raw_input.

input_variable = raw_input ("Enter your name: ")
print ("your name is" + input_variable)
36
ответ дан davidism 20 August 2018 в 08:42
поделиться

input_variable = input («Введите ваше имя:») print («ваше имя« + input_variable »)

u необходимо вводить ввод в виде одиночных или двойных qoutes

0
ответ дан Parminder Singh 20 August 2018 в 08:42
поделиться

Для python 3 и выше

s = raw_input ()

он решит проблему на IDE pycharm, если вы решаете на онлайн-сайте точно hackerrank, а затем используйте:

s = input()
2
ответ дан RAHUL KUMAR 20 August 2018 в 08:42
поделиться

вы должны использовать raw_input, потому что используете python-2.7. Когда вы используете input () для примера переменной: s = input ('Name:'), он выполнит команду ON Python Environement Without Saving. Что вы написали на переменной (-ах) и создании ошибки Если то, что вы написали, не определено, значит, вы можете использовать raw_input (), он правильно сохранит то, что вы написали в переменной, например: f = raw_input ('Name:') и он не выполнит его в среде python без создания любой возможной ошибки

input_variable = raw_input('Enter Your Name : ')
print("Your Name Is  : " + (input_variable))
4
ответ дан Skiller Dz 20 August 2018 в 08:42
поделиться
  • 1
    Благодарим вас за этот фрагмент кода, который может предоставить некоторую ограниченную немедленную помощь. Правильное объяснение значительно улучшит его долгосрочную ценность, показывая, почему это является хорошим решением проблемы и сделает его более полезным для будущих читателей с другими аналогичными вопросами. Измените свой ответ, чтобы добавить какое-то объяснение, включая сделанные вами предположения. – Maximilian Peters 6 May 2018 в 21:14
  • 2
    Многие из тех, кто был связан с этим сообщением, не объяснили и предположения Итак, зачем мне это нужно? когда вы используете input () в Python 2.7, он будет применять Automotquly то, что вы написали на терминале, оно не будет сохранять его на вашей переменной, но raw_input сохранит его, exampe f = input ('Name:'), там он будет выполнять команду на environement непосредственно с созданием ошибки, если то, что вы выбрали, не определено, но f = raw_input ('Name:'), raw_input сохранит то, что вы написали на переменной f, и не будет исполнено, а не как вход ( ), которые являются моим объяснением – Skiller Dz 6 May 2018 в 21:37
  • 3
    Спасибо, что добавили объяснение в ответ! Копирование и вставка могут быть краткосрочным решением, объяснения делают сайт полезным. – Maximilian Peters 6 May 2018 в 21:45

Поскольку вы пишете для Python 3.x, вы хотите начать свой скрипт с помощью:

#!/usr/bin/env python3

Если вы используете:

#!/usr/bin/env python

По умолчанию к Python 2.x. Они идут в первой строке вашего скрипта, если нет ничего, что начинается с #! (ака shebang).

Если ваши скрипты начинаются с:

#! python

Затем вы можете изменить его на:

#! python3

. Хотя это более короткое форматирование распознается только несколькими программами, такими как пусковая установка, поэтому это не лучший выбор.

Первые два примера гораздо более широко используются и помогут гарантировать, что ваш код будет работать на любой машине, на которой установлен Python.

8
ответ дан Zim 20 August 2018 в 08:42
поделиться
221
ответ дан Community 31 October 2018 в 07:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: