我有這個python代碼,這似乎很直接,但是當我嘗試加載它時,我得到一個錯誤,如上所示。您也可以在下面查看完整的錯誤消息。請問我做錯了什麼?謝謝。如何修復AttributeError:'str'對象沒有屬性'_radius'?
import math
class Circle2D(object):
def __init__(self, x = 0, y = 0, radius = 0):
self._x = x
self._y = y
self._radius = radius
def __str__(self):
return "Circle with center (" + str(self._x) + ", " + str(self._y) + ")"
def getX(self):
return self._x
def getY(self):
return self._y
def getArea(self):
return (math.pi * self._radius**2)
def getPerimeter(self):
return (math.pi * 2 *self._radius)
def containsPoint(self, x, y):
if (((x - self._x)**2 - (y - self._y)**2) < self._radius**2):
return True
else:
return False
def contains(self, second):
distance = math.sqrt((self._x - second._x)**2 + (self._y - second._y)**2)
if ((second._radius + distance) <= self._radius):
return True
else:
return False
def overlaps(self, second):
distance = math.sqrt((self._y - second._y)**2 + (self._x - second._x)**2)
if (distance <= (self._radius + second
._radius)):
return True
else:
return False
def __contains__(self, anotherCircle):
distance = math.sqrt((self._x - anotherCircle._x)**2 + (self._y - anotherCircle._y)**2)
if(self._radius >= (anotherCircle._radius + distance)):
return True
else:
return False
def __cmp__(self, anotherCircle):
if self._radius > anotherCircle._radius:
return 1
elif self._radius > anotherCircle._radius:
return -1
else:
return 0
def __eq__(self, anotherCircle):
if self._radius == anotherCircle._radius:
return True
else:
return False
def __ne__(self, anotherCircle):
if self._radius == anotherCircle._radius:
return False
else:
return True
當我的Runn它和幾個步驟後,外殼只是表明:
Traceback (most recent call last):
File "C:\Users\wxwdd_000\Desktop\HW_2.py", line 124, in <module>
main()
File "C:\Users\wxwdd_000\Desktop\HW_2.py", line 121, in main
print 'c1 == "Hello"?', c1 == "Hello"
File "C:\Users\wxwdd_000\Desktop\HW_2.py", line 57, in __eq__
if self._radius == anotherCircle._radius:
AttributeError: 'str' object has no attribute '_radius'
我怎樣才能修復代碼?
它的作品!謝謝!! – BengDai
@BengDai,歡迎來到Stack Overflow!有些人試圖回答你的問題。如果這對你有幫助,你可以通過[接受答案](http://meta.stackexchange.com/a/5235)告訴社區,這對你最有用。 – falsetru