我有一条狗 发表于 2021-5-16 17:07:00

求大神帮忙解决下属性访问问题,提示没有定义名字

代码是这样的class Rectangle:
    def __init__(self,width=0,height=0):
      self.width = width
      self.height = height

    def __setattr__(self, nanme, value):
      if name == 'square':
            self.width = value
            self.height = value
      else:
            super().__setattr__(name,value)

    def getArea(self):
      return self.width * self.height

然后就报错了,根据视频教程写的啊,错误提示是这样的:
Traceback (most recent call last):
File "<pyshell#61>", line 1, in <module>
    r1 = Rectangle(4,.5)
File "E:\Python\lianxi.py", line 78, in __init__
    self.width = width
File "E:\Python\lianxi.py", line 82, in __setattr__
    if name == 'square':
NameError: name 'name' is not defined

suchocolate 发表于 2021-5-16 17:12:46

代码发全

我有一条狗 发表于 2021-5-16 17:16:03

suchocolate 发表于 2021-5-16 17:12
代码发全

这个就是全的代码

我有一条狗 发表于 2021-5-16 17:16:36

suchocolate 发表于 2021-5-16 17:12
代码发全

class Rectangle:
    def __init__(self,width=0,height=0):
      self.width = width
      self.height = height

    def __setattr__(self, nanme, value):
      if name == 'square':
            self.width = value
            self.height = value
      else:
            super().__setattr__(name,value)

    def getArea(self):
      return self.width * self.height

suchocolate 发表于 2021-5-16 17:20:10

我有一条狗 发表于 2021-5-16 17:16
class Rectangle:
    def __init__(self,width=0,height=0):
      self.width = width


这里只是类的定义,从你的报错信息来看,不仅仅有定义,还有调用的代码。
代码发全吧。

Daniel_Zhang 发表于 2021-5-16 17:20:15

我有一条狗 发表于 2021-5-16 17:16
class Rectangle:
    def __init__(self,width=0,height=0):
      self.width = width


Daniel_Zhang 发表于 2021-5-16 17:21:10

suchocolate 发表于 2021-5-16 17:20
这里只是类的定义,从你的报错信息来看,不仅仅有定义,还有调用的代码。
代码发全吧。

我觉得是他 __setattr__ 那里传入的变量叫 nanme

他调取的时候是 name{:10_250:}

suchocolate 发表于 2021-5-16 17:23:50

Daniel_Zhang 发表于 2021-5-16 17:21
我觉得是他 __setattr__ 那里传入的变量叫 nanme

他调取的时候是 name

呵呵

hrp 发表于 2021-5-16 17:50:05

class Rectangle:
    def __init__(self, width=0, height=0):
      self.width = width
      self.height = height

    def __setattr__(self, name, value):# 这里name拼错了
      if name == "square":
            self.width = value
            self.height = value
      else:
            super().__setattr__(name, value)

    def getArea(self):
      return self.width * self.height

我有一条狗 发表于 2021-5-22 17:09:09

hrp 发表于 2021-5-16 17:50


感谢
页: [1]
查看完整版本: 求大神帮忙解决下属性访问问题,提示没有定义名字