2017-09-28 13 views
1

実際にコードの結果を自分の端末に出力するようにコードを取得しようとしていますが、なぜそれが印刷されないのか分からないようです。私はちょうどコードすることを学んでいるので、私はこのサイトの種類について多くの説明を見つけています。これは前に尋ねられている場合は謝ります。 これは私のpythonファイルpython.pyです:PythonプログラムからMacの端末にデータを出力する

class point(object): 

    def __init__(self, x, y): 

     self.x = float(x); 
     self.y = float(y); 

    def __str__(self): 

     return("(" + self.x + "," + self.y + ")") 


def main(): 

    first = point(2,3) 


if __name__ == '__main__': 
    main() 

と端末で、私はちょうど

+1

プリントを置くだけです。つまり、print put print "hi" ' – Scriptable

+0

macの端末 –

答えて

0

他にも言及したように、端末に出力するにはmain関数でprint()を追加する必要があります。さらに、いくつかの注意点があります:Pythonはセミコロンを必要としないので、__init __()メソッドでそれらを使う必要はなく、浮動小数点を暗黙的に文字列に変換することはできませんので、__str__ () 方法。 MrTrustworthyが指摘したように

class point(object): 
    def __init__(self, x, y): 
     self.x = float(x) 
     self.y = float(y) 

    def __str__(self): 
     # explicitly cast floats to strings 
     return "(" + str(self.x) + "," + str(self.y) + ")" 

def main(): 
    first = point(2,3) 
    print(first) 

if __name__ == '__main__': 
    main() 

また、あなたがクラスを呼び出す必要はありません.__ strの__()を直接印刷が最初のクラスに関連付けられ__str __()メソッドを呼び出して。そのようなメソッドがなく、暗黙の変換が失敗した場合、呼び出し関数とアドレスの表現をメモリに取得します。

例から__str __()を削除した場合、オブジェクトを印刷しようとすると、<__main__.point object at 0x7f184cec4b70>のような出力が得られるはずです。

1

を "Pythonのpython.py" と入力していますが、端末に印刷するmain()関数にprint文を追加します。 :

class point(object): 

def __init__(self, x, y): 

    self.x = float(x); 
    self.y = float(y); 

def __str__(self): 

    return("(" + self.x + "," + self.y + ")") 


def main(): 

    first = point(2,3) 
    print(first) 


if __name__ == '__main__': 
    main() 
+0

「最初の.__ str__」を印刷しなければならないのはなぜですか?それが "__str__"が使用される唯一の方法ではありませんか? –

+0

最初の.__ str__は、オブジェクト "point"に対して定義した関数を指しています。この関数は、呼び出されると、オブジェクトを記述する文字列を返します。 "print()"関数を使うと、pythonは自動的にあなたのオブジェクトの文字列表現を印刷しようとします。そうしないと、ほとんどの場合人間が読むことができません。したがって、print関数は舞台裏で__str __()関数自体を呼び出します。 print(最初の.__ str __())を自分で使うこともできますが、括弧を忘れてはいけません。 – MrTrustworthy

関連する問題