pythonsublimetext

super() throwing an error in Sublime Text, works in PyCharm/Terminal


I've produced the following code as part of an assignment.

class Question:
    """Base class for all questions"""

    question_count = 0

    def __init__(self, desc):
        self.desc = desc

        Question.question_count += 1


class MarkovMM(Question):
    def __init__(self, desc, arrival, service):
        super().__init__(desc)
        if self.desc == "Question 2":
            self.answer = round(1 - (1 - (arrival / service)) - ((1 - (arrival / service)) * (arrival / service)), 3)
        elif self.desc == "Question 3":
            self.answer = round(1 / ((service / 60) - (arrival / 60)), 4)

qu2 = MarkovMM("Question 2", 5, 23)
print(qu2.answer)
qu3 = MarkovMM("Question 3", 6, 22)
print(qu3.answer)

When I run it through PyCharm and Ubuntu terminal, it works just fine. However, running it in Sublime Text it produces the following error.

Traceback (most recent call last):
  File "/home/estilen/Dropbox/College/Year_3/CSA2/Python/hello.py", line 20, in <module>
    qu2 = MarkovMM("Question 2", 5, 23)
  File "/home/estilen/Dropbox/College/Year_3/CSA2/Python/hello.py", line 14, in __init__
    super().__init__(desc)
TypeError: super() takes at least 1 argument (0 given)

Why does the error come up in Sublime, but not in PyCharm or Terminal?

Desired output:

0.047
3.75

Solution

  • Your sublimetext is using the default build system, which is Python 2. Configure it to run in Python 3.

    Tools -> Build System -> New Build System ...

    Add this content:

    {
        "cmd": ["python3", "-u", "$file"],
        "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
        "selector": "source.python"
    }
    

    Save the configuration with a sensible filename, say python3.sublime-build, and select this newly created build in Tools -> Build With ...

    Location to save the file on macOS:

    ~/Library/Application Support/Sublime Text/Packages/User/python3.sublime-build