Python 如何从类点调用对象,以便在矩形中使用它

Python 如何从类点调用对象,以便在矩形中使用它,python,function,class,rectangles,Python,Function,Class,Rectangles,我想从类点调用x和y点,并在类矩形中实现它,这样我可以输入x,y,w,h,它可以打印一个具有一定高度和宽度的点(x,y),还可以打印一个区域 它应该生产什么的一个例子是 (3,2)处的矩形,高度=2,宽度=1,面积=2 但是,我在第22行中不断遇到这个错误: __str__ result += str(self._X)+ ',' + str(self._Y) + ')' AttributeError: 'rectangle' object has no attribute '_X'

我想从类点调用x和y点,并在类矩形中实现它,这样我可以输入x,y,w,h,它可以打印一个具有一定高度和宽度的点(x,y),还可以打印一个区域

它应该生产什么的一个例子是

(3,2)处的矩形,高度=2,宽度=1,面积=2

但是,我在第22行中不断遇到这个错误:

 __str__
    result += str(self._X)+ ',' + str(self._Y) + ')'
AttributeError: 'rectangle' object has no attribute '_X'
这是我的当前代码:

import math
import sys
import stdio

class Point(object):
     def __init__(self, x, y):
          self._X = x
          self._Y = y

class rectangle:
     def __init__(self,x,y, w, h):
        self._h = h
        self._w = w

     def area(self):
          a = self._h * self._w
          return a

     def __str__(self):
          result = 'Rectangle at('
          result += str(self._X)+ ',' + str(self._Y) + ')'
          result += ' with height = ' + str(self._h)
          result += ' width = ' + str(self._w)
          result += ' , area = ' + str(self.area())
          return result


def main():
     x = int(input(sys.argv[0]))
     y = int(input(sys.argv[0]))
     w = int(input(sys.argv[0]))
     h = int(input(sys.argv[0]))
     
     rect = rectangle(x,y,w,h)
     stdio.writeln(rect)

     
if __name__ == '__main__':
     main()




矩形仅具有属性_h和_w。Self指的是矩形对象。您需要添加缺少的属性_x和_y,或者使用从点继承。

矩形仅具有属性_h和_w。Self指的是矩形对象。您需要添加缺少的属性_x和_y,或者使用点继承。

我想您的意思是在矩形中创建一个点:

类矩形:
定义初始值(self,x,y,w,h):
self.point=点(x,y)
自我。_h=h
自我。_w=w
def区域(自身):
a=自我。_h*自我。_w
归还
定义(自我):
结果='矩形在('
结果+=str(self.point.X)+','+str(self.point.Y)+')
结果+='高度='+str(自身)
结果+='width='+str(自身)
结果+=',区域='+str(self.area())
返回结果

我想你想在矩形中创建一个点:

类矩形:
定义初始值(self,x,y,w,h):
self.point=点(x,y)
自我。_h=h
自我。_w=w
def区域(自身):
a=自我。_h*自我。_w
归还
定义(自我):
结果='矩形在('
结果+=str(self.point.X)+','+str(self.point.Y)+')
结果+='高度='+str(自身)
结果+='width='+str(自身)
结果+=',区域='+str(self.area())
返回结果

矩形类可以从点开始创建它,您也可以在矩形中初始化它。init

class rectangle(Point):
     def __init__(self,x,y, w, h):
        super().__init__(x,y)
        self._h = h
        self._w = w

     def area(self):
          a = self._h * self._w
          return a

     def __str__(self):
          result = 'Rectangle at('
          result += str(self._X)+ ',' + str(self._Y) + ')'
          result += ' with height = ' + str(self._h)
          result += ' width = ' + str(self._w)
          result += ' , area = ' + str(self.area())
          return result

但我认为最好使用组合,因为它在第一个答案中指定了

矩形类可以从点开始创建它,您也可以在矩形中初始化它。init

class rectangle(Point):
     def __init__(self,x,y, w, h):
        super().__init__(x,y)
        self._h = h
        self._w = w

     def area(self):
          a = self._h * self._w
          return a

     def __str__(self):
          result = 'Rectangle at('
          result += str(self._X)+ ',' + str(self._Y) + ')'
          result += ' with height = ' + str(self._h)
          result += ' width = ' + str(self._w)
          result += ' , area = ' + str(self.area())
          return result

但我认为最好使用组合,因为它在第一个答案中指定了

您使用调用变量这个术语。这并不是你认为它的意思。请停止。另外,在包含合理的错误回溯方面做得很好。你使用了调用变量这个术语。这并不意味着你认为这意味着什么。请停止。另外,做得好,包括一个合理的错误回溯。