class ComplexNumber:
# setting a Debug value and will be used to ask user if they want to enter degub mode
Debug = None
# initiating variables, self consists of real, imag, and complex.
def __init__(self, real,imag):
#The prefix __ is added to make the variable private
self.__real = real
self.__imag = imag
# Overload '+','-' and '*' to make them compatible for 2 by 2 matrix operation
def __add__(self, o):
return ComplexNumber((self.__real + o.__real),(self.__imag + o.__imag))
def __sub__(self, o):
return ComplexNumber((self.__real - o.__real),(self.__imag - o.__imag))
def __mul__(self,o):
return ComplexNumber((self.__real * o.__real - self.__imag * o.__imag),\
(self.__imag * o.__real + self.__real * o.__imag))
# Create a child class from ComplexNumber
class Vector(ComplexNumber):
#inherit the property of real and image as i and j
def __init__(self, i,j,k):
super().__init__(i, j)
self.k = k
def __add__(self, o):
return Vector((self.__i + o.__i),(self.__j + o.__j),(self.__k + o.__k))
A = Vector(1,0,3)
B = Vector(1,0,3)
print(A+B)
我收到一条错误消息,说“在 add 中,返回向量((self .__ i + o .__ i),(self .__ j + o .__ j),(self .__ k + o .__ k) )” AttributeError:“ Vector”对象没有属性“ _Vector__i”
我想创建一个具有更多属性“ k”的新子类,并将2d add方法更改为3d add方法。这个继承在哪里出错了?
答案 0 :(得分:0)
在__add__
的{{1}}方法中,您无需初始化属性即可访问属性Vector
和__i
。这就是为什么您得到错误。