编写类时出错

2024-05-14 11:27:05 发布

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

我正在http://www.sthurlow.com/python/lesson08/上运行一个在线教程,我相信我了解类在python中是如何工作的,至少在某种程度上是这样,但当我运行以下代码时:

class Shape:
    def __init__(self,x,y):
        self.x = x
        self.y = y
    description = "This shape has not been described yet"
    author = "Nobody has claimed to make this shape yet"
    def area(self):
        return self.x * self.y
    def perimeter(self):
        return 2 * self.x + 2 * self.y
    def describe(self,text):
        self.description = text
    def authorName(self,text):
        self.author = text
    def scaleSize(self,scale):
        self.x = self.x * scale
    self.y = self.y * scale

我得到这个错误:

Traceback (most recent call last):
  File "Y:/python/Shape.py", line 1, in -toplevel-
    class Shape:
  File "Y:/python/Shape.py", line 17, in Shape
    self.y = self.y * scale
NameError: name 'self' is not defined

任何帮助都会很好

谢谢

理查德


Tags: textpyselfreturndefnotdescriptionclass
3条回答

你需要缩进最后一行。你知道吗

def scaleSize(self,scale): 
    self.x = self.x * scale 
self.y = self.y * scale 

应该是

def scaleSize(self,scale): 
    self.x = self.x * scale 
    self.y = self.y * scale 

代码的最后一部分是错误的

def scaleSize(self,scale):
    self.x = self.x * scale
self.y = self.y * scale

注意缩进,这在Python中很重要。根据您现在所拥有的,意味着self.y = self.y * scale不在scaleSize方法中,并且您的Shape类的关键字self未定义。你知道吗

你需要做的是适当地缩进

def scaleSize(self,scale):
    self.x = self.x * scale
    self.y = self.y * scale

指示行的缩进级别错误,因此它不在scaleSize()方法中。你知道吗

相关问题 更多 >

    热门问题