jcpython2 发表于 2022-12-22 15:50:21

rerurn没返回,还有请检查一下代码重复

class rectangle:
    w = 5
    h = 4
    def __int__(self , w , h):
      self.w = w
      self.h = h
    def setrect(self):
      self.w = int(input('长:'))
      self.h = int(input('宽:'))
    def getrect(self):
      print('长宽分别为:', self.w , self.h)
    def getarea(self):
      return self.w * self.h

rect = rectangle()
rect.getarea()


运行为空,没返回值


另外主要问一下,下面这段代码是否多余并且重复了? 如果是的话该如何改进下次避免?
    def __int__(self , w , h):
      self.w = w
      self.h = h

qq1151985918 发表于 2022-12-22 15:51:16

init

tommyyu 发表于 2022-12-22 16:00:02

1. 不应该是 __int__ ,而是 __init__ 。
2. 明明在第 2、3 行已经给 w 和 h 赋值了,为什么要在 __init__ 中再次赋值了?如果想设置默认值的话,可以使用函数的默认参数。
3. 最后一行中,虽然你调用了这个函数,但是你并没有将他的返回值打印出来,所以你没有看到任何回应。
改完的代码:class rectangle:
    def __init__(self , w=5 , h=4): #如果没有传入参数,w 和 h 的默认值将会是 5 和 4
      self.w = w
      self.h = h
    def setrect(self):
      self.w = int(input('长:'))
      self.h = int(input('宽:'))
    def getrect(self):
      print('长宽分别为:', self.w , self.h)
    def getarea(self):
      return self.w * self.h

rect = rectangle()
print(rect.getarea())

jcpython2 发表于 2022-12-22 16:02:30

tommyyu 发表于 2022-12-22 16:00
1. 不应该是 __int__ ,而是 __init__ 。
2. 明明在第 2、3 行已经给 w 和 h 赋值了,为什么要在 __init__ ...

原本return我写在def里面的,忘记了基础

jcpython2 发表于 2022-12-22 16:05:10

tommyyu 发表于 2022-12-22 16:00
1. 不应该是 __int__ ,而是 __init__ 。
2. 明明在第 2、3 行已经给 w 和 h 赋值了,为什么要在 __init__ ...

还学会了默认值的写法

页: [1]
查看完整版本: rerurn没返回,还有请检查一下代码重复