不能将对象变量作为默认值传递给对象方法

2024-09-27 19:30:05 发布

您现在位置:Python中文网/ 问答频道 /正文

Win 10、x64、Python 2.7.8

我试图实现以下内容(这是完整代码的精简版本,但复制了问题)

class TrabGraph:

    def __init__(self):            
        self.radius = 1.0

    def circle(self, rad=self.radius):
        print rad

test = TrabGraph()
test.circle(rad=2.0)

我得到以下错误

Traceback (most recent call last): File "D:/Lattice/variableTest.FCMacro", line 6, in class TrabGraph: File "D:/Lattice/variableTest.FCMacro", line 12, in TrabGraph def circle(self, rad=self.radius): : name 'self' is not defined

所以我试着

class TrabGraph:

    def __init__(self):            
        self.radius = 1.0

    def circle(self, rad=radius):
        print rad

test = TrabGraph()
test.circle(rad=2.0)

出现以下错误

Traceback (most recent call last): File "D:/Lattice/variableTest.FCMacro", line 6, in class TrabGraph: File "D:/Lattice/variableTest.FCMacro", line 12, in TrabGraph def circle(self, rad=radius): : name 'radius' is not defined

那么,我不了解对象如何工作的原因是什么呢?如何使rad的默认值与self.radius相同,但在需要时调用circle方法时仍然能够更改它


Tags: intestselfinitdeflineclassfile

热门问题