尝试code from。
from dataclasses import dataclass, field, InitVar
@dataclass
class XYPoint:
last_serial_no = 0
x: float
y: float = 0
skip: InitVar[int] = 1
serial_no: int = field(init=False)
def __post_init__(self, skip):
self.serial_no = self.last_serial_no + self.skip
self.__class__.last_serial_no = self.serial_no
def __add__(self, other):
new = XYPoint(self.x, self. y)
new.x += other.x
new.y += other.y
以此作为测试示例:
XYPoint.__add__(32,34)
运行代码时,出现错误:AttributeError:'int'对象没有属性'x' 尝试增加def的收益;同样的错误。
答案 0 :(得分:1)
您的示例没有尝试添加两个XYPoint
实例,而是尝试使用__add__
的{{1}}方法,但第一个参数XYPoint
除外。在这种情况下,self
不是XYPoint
,这是一个整数。在32
函数中,它尝试执行
__add__
您可能会猜到这是一个错误。
也许这可能是您正在尝试做的。
new = XYPoint(32.x, 32.y)