大家给看看代码的错误在哪里啊?
class Rectangle:length = 0
width = 0
def set_length(self):
self.length = float(input('请输入矩形的长度: '))
def set_width(self):
self.width = float(input('请输入矩形的宽度: '))
def get_perimeter(self):
if self.length == 0:
self.set_length()
if self.width == 0:
self.set_width()
return 2 * (self.length + self.width)
def get_area(self):
if self.length == 0:
self.set_length()
if self.width == 0:
self.set_width()
return self.length * self.width
r1 = Rectangle
print(r1.width, r1.length)
print(r1.get_perimeter())
运行错误提示:
Traceback (most recent call last):
File "***", line 100, in <module>
print(r1.get_perimeter())
TypeError: get_perimeter() missing 1 required positional argument: 'self'
请问上面代码出现了错误,不知道该如何解决呢?
Rectangle 要加括号
class Rectangle:
length = 0
width = 0
def set_length(self):
self.length = float(input('请输入矩形的长度: '))
def set_width(self):
self.width = float(input('请输入矩形的宽度: '))
def get_perimeter(self):
if self.length == 0:
self.set_length()
if self.width == 0:
self.set_width()
return 2 * (self.length + self.width)
def get_area(self):
if self.length == 0:
self.set_length()
if self.width == 0:
self.set_width()
return self.length * self.width
r1 = Rectangle() # 此处要加括号
print(r1.width, r1.length)
print(r1.get_perimeter()) 在创建 Rectangle 类的实例时,需要使用圆括号来调用类,并将其赋值给变量 r1。修改代码如下:
r1 = Rectangle()
print(r1.width, r1.length)
print(r1.get_perimeter())
这样就可以正确调用 Rectangle 类中定义的方法和属性了。
完整代码:
class Rectangle:
length = 0
width = 0
def set_length(self):
self.length = float(input('请输入矩形的长度: '))
def set_width(self):
self.width = float(input('请输入矩形的宽度: '))
def get_perimeter(self):
if self.length == 0:
self.set_length()
if self.width == 0:
self.set_width()
return 2 * (self.length + self.width)
def get_area(self):
if self.length == 0:
self.set_length()
if self.width == 0:
self.set_width()
return self.length * self.width
r1 = Rectangle()
print(r1.width, r1.length)
print(r1.get_perimeter())
求最佳答案{:10_254:} 你创建 Rectangle 类的实例时,遗漏了 () 。你只写了类的名字,但没有调用它的构造函数。所以你实际上并没有创建一个新的 Rectangle 对象。
你应该像这样创建一个对象:
r1 = Rectangle()
然后就可以使用这个对象了:
print(r1.width, r1.length)
print(r1.get_perimeter())
print(r1.get_area())
这是你修复后的完整代码:
class Rectangle:
length = 0
width = 0
def set_length(self):
self.length = float(input('请输入矩形的长度: '))
def set_width(self):
self.width = float(input('请输入矩形的宽度: '))
def get_perimeter(self):
if self.length == 0:
self.set_length()
if self.width == 0:
self.set_width()
return 2 * (self.length + self.width)
def get_area(self):
if self.length == 0:
self.set_length()
if self.width == 0:
self.set_width()
return self.length * self.width
r1 = Rectangle()
print(r1.width, r1.length)
print(r1.get_perimeter())
print(r1.get_area())
你可以看到,现在 r1 是一个实例化的 Rectangle 对象,你可以调用它的方法,比如 get_perimeter 和 get_area ,以及访问它的属性,比如 width 和 length 。 liuzhengyuan 发表于 2023-6-6 21:17
Rectangle 要加括号
class Rectangle:
谢谢您的指点. isdkz 发表于 2023-6-6 21:44
你创建 Rectangle 类的实例时,遗漏了 () 。你只写了类的名字,但没有调用它的构造函数。所以你实际上并没 ...
非常感谢.
页:
[1]