这是我写的。一个关于Geometric Object的程序,我正在尝试使用GeometricObject。 str(self)在Circle的str函数中,但它不起作用。我尝试了很多方法,但仍然存在一些错误。如何在其他课程中使用课程的回报?
import math
class GeometricObject(object):
def __init__(self, color = "white", 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 Circle(object):
def __init__(self, radius = 1, color = "white", filled = True):
self.radius = radius
self.color = color
self.filled = filled
def __str__(self):
return "Circle: radius = " + str(self.radius) + \
GeometricObject.__str__(self)
def getArea(self):
return (math.pi * self.radius**2)
def getPerimeter(self):
return (math.pi * 2 * self.radius)
class Triangle(object):
def __init__(self, side1 = 1, side2 = 1, side3 = 1, color = "white", filled = True):
self.side1 = side1
self.side2 = side2
self.side3 = side3
self.color = color
self,filled = filled
def __str__(self):
return "Triangle: side1 = " + str(self.side1) + \
" side2 = " + str(self.side2) + \
" side3 = " + str(self.side3) + \
" color: " + str(self.color) +\
" filled: " + str(self.filled)
def getArea(self):
s = (side1 + side2 + side3)/2
area = sqrt(s(s - side1)(s - side2)(s - side3))
return area
def getPerimter(self):
return (side1 + side2 + side3)
def main():
#Testing Circle class
print "Entering input values for a circle"
r = input('Enter value for radius: ')
c1 = Circle(r)
print c1
print "%.2f" % c1.getArea()
print "%.2f" % c1.getPerimeter()
print c1.getColor()
print c1.isFilled()
#Testing Triangle class
print "\nEntering input values for a traingle"
s1 = input('Enter value for side1: ')
s2 = input('Enter value for side2: ')
s3 = input('Enter value for side3: ')
color = raw_input('Enter color of the triangle: ')
filled = input('Is the triangle filled (1/0)? ')
filled = (filled == 1)
t1 = Triangle(s1, s2, s3, color, filled)
print t1
print "%.2f" % t1.getArea()
print "%.2f" % t1.getPerimeter()
print t1.getColor()
print t1.isFilled()
main()
但它总是告诉我说,
Entering input values for a circle
Enter value for radius: 1
Traceback (most recent call last):
File "C:\Users\wxwdd_000\Desktop\CSC131\Lab_5.py", line 94, in <module>
main()
File "C:\Users\wxwdd_000\Desktop\CSC131\Lab_5.py", line 71, in main
print c1
File "C:\Users\wxwdd_000\Desktop\CSC131\Lab_5.py", line 32, in __str__
GeometricObject.__str__(self)
TypeError: unbound method __str__() must be called with GeometricObject instance as first argument (got Circle instance instead)
>>>
我怎么能修复STR功能?
你或许意味着圆形和三角形海峡方法从GeometricObject继承? – BrenBarn