我收到这样一个错误:GeometricObject
的颜色和填充参数没有传递给Triangle
对象,但是不确定为什么。我尝试了2种方法,更喜欢使用super()
。
当我尝试通过用户输入获取Triangle
的最后一行时,出现错误:
TypeError: __init__() takes from 1 to 4 positional arguments but 6 were given
import math
import sys
class GeometricObject:
def __init__(self,color = "green",filled = True):
self.__color = color
self.__filled = filled
def getcolor(self):
return self.__color
def setColor(self,color):
self.__color = color
def isFilled(self):
return self.__filled
def setfilled(self,filled):
self.__filled = filled
def __str__(self):
return "color: " + self.__color + \
" and filled: " + str(self.__filled)
class Triangle(GeometricObject):
def __init__(self,side1 = 1.0,side2 = 1.0,side3= 1.0):
GeometricObject.__init__(self)
#super().__init__(color,filled)
self.__side1 = side1
self.__side2= side2
self.__side3 = side3
def get_side1(self):
return self.__side1
def set_side1(self,side1):
self.__side1 = side1
def get_side2(self):
return self.__side2
def set_side2(self,side2):
self.__side2 = side2
def get_side3(self):
return self.__side3
def set_side3(self,side3):
self.__side3 = side3
def get_area(self):
p = self.get_perimeter() / 2
area = math.sqrt(
p *
(p - self.__side1) *
(p - self.__side2) *
(p - self.__side3)
)
return area
def get_perimeter(self):
return self.__side1 + self.__side2 + self.__side
def __str__(self):
info = "Triangle: side1 = {} side2 = {} side3 = {}".format(
self.__side1,self.__side2,self.__side3
)
return info
if __name__ == "__main__":
float_sides = []
sides = input("Enter numeric values for sides 1,2,and 3\
separated by commas: ").split(",")
try:
for e in sides:
float(e)
float_sides.append(e)
except:
print("Invalid input,try again.")
sys.ext()
if len(float_sides) !=3:
print("Invalid number of inputs,try again")
sys.ext()
side1 = float_sides[0]
side2 = float_sides[1]
side3 = float_sides[2]
color = input('Enter color: ')
filled = input('Enter 1 if triangle is filled or 0 if it is not: ')
if filled not in (1,0):
print("Invalid input,try again")
#sys.ext()
triangle = Triangle(side1,side2,side3,color,filled)