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,因为shuffle不返回任何内容。在 Python 中,不返回任何内容None的函数默认返回。此外,通过这样做:

print a

您是在告诉 Python 打印调用该shuffle方法的返回值。

要解决这个问题,请shuffle返回一些东西(在这种情况下,我认为你想让它返回self)。

print另外,提示一下:根据您的语法判断,您使用的是 Python 3.x。在 Python 3.x. 中,不需要让类继承自object. 你只在 Python 2.x 中这样做了。使课程成为“新型”课程。但是,在 Python 3.x. 中,所有类都是“新式”的。

于 2013-10-11T17:14:30.877 回答
1

只需selfshuffle方法返回。

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 回答
1

您正在分配调用shuffle到的结果a

shuffle在您编写的代码中返回None

而是这样做:

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