2017-03-15 1 views
2

私は割り当ての一部として次のコードを生成しました。super()はサブライムテキストでエラーを投げ、PyCharm/Terminalで働いています

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) 

私がPyCharmとUbuntuターミナルを使って実行すると、うまく動作します。ただし、それをSublime Textで実行すると、次のエラーが発生します。

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) 

なぜエラーは崇高に現れますが、PyCharmまたはTerminalでは表示されません。

所望の出力:

0.047 
3.75 
+3

あなたの 'Sublime'はおそらくPython3バージョンを指しているので、端末とPyCharmはPython2を呼び出しています。 – Abdou

+0

@Abdou私はPython 3を使用することを意味しています。 –

+0

Sublimeは、Python3を指しているようです。おそらくPyCharmとあなたの端末はここで設定が必要かもしれません。 – Abdou

答えて

6

Pythonは2.設定し、それはPythonで実行することですあなたのsublimetextデフォルトのビルドシステムを使用しているが、3

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

このコンテンツを追加します。

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

賢明なfiファイル名をpython3.sublime-buildとし、新しく作成したビルドをTools -> Build With ...に選択します。

+0

魅力のように動作します!あなたの親切な先生に感謝。また、別の質問であなたを打つために、別のPythonバージョンのためにエラーがスローされた場合、Python 2とPython 3のsuper()の主な違いは何ですか? –

+1

元々superを呼び出すときに型を指定しなければなりませんでした。 Python 3では、彼らはこの定型文を削除するためにいくつかの[黒魔法](http://stackoverflow.com/q/36993577/674039)を追加しました。 Python 2のための厳しい愛の精神の中で、誰もその構文の砂糖をバックポートするのに気にしなかったので、あなたはPython 2を使っているならまだまだ古いバージョンを使う必要があります。 – wim

+0

@wim:https:// stackoverflowにメモがあります。拡張可能なcom/documentation/python/419/classes/1399/basic-inheritance#t = 201703160319593873367 – Ryan

関連する問題