0

次のコードを書きました。

import random
class Point(object):    
    x = 0.0    
    def __init__(self, x): self.x = x            
    def shuffle(self): self.x = random.uniform(0.0, 1.0)

a = Point(0.0).shuffle()
print('a', a)

b = Point(0.0)
b.shuffle()
print('b', b)

戻り値:

('a', None)
('b', <__main__.Point object at 0x00000000024FB710>)

で問題が発生しました:オブジェクト ( )の新しいインスタンス ( )) のメソッド (ここでは )を変数に代入せずaに呼び出すにはどうすればよいですか?shuffle()aPoint

4

3 に答える 3

3

何も返さないNoneため、印刷されます。shufflePython では、何も返さない関数はNoneデフォルトで戻ります。さらに、次のようにします。

print a

メソッドの呼び出しの戻り値を出力するように Python に指示していますshuffle

問題を解決するには、shuffle何かを返す必要があります (この場合は、 return にしたいと思いますself)。

また、ちょっとしたヒント:print構文から判断すると、Python 3.x を使用しています。Python 3.x. では、クラスを から継承する必要はありませんobject。Python 2.xでのみそれを行いました。クラスを「新しいスタイル」のクラスにします。ただし、Python 3.x. では、すべてのクラスが「新しいスタイル」です。

于 2013-10-11T17:14:30.877 に答える
1

呼び出しの結果を に代入しshuffleていaます。

shuffleNoneあなたが書いたコードで戻ります。

代わりに次のようにします。

def shuffle(self): 
    self.x = random.uniform(0.0, 1.0)
    return self
于 2013-10-11T17:14:05.990 に答える
1

メソッドselfから戻るだけです。shuffle

import random
class Point(object):    
    x = 0.0    
    def __init__(self, x): self.x = x            
    def shuffle(self): 
        self.x = random.uniform(0.0, 1.0)
        return self

a = Point(0.0).shuffle()
print('a', a) #prints ('a', <__main__.Point object at 0x612850>)
于 2013-10-11T17:14:05.253 に答える