所以我是編程新手,我正在嘗試學習如何在 uni 中編碼。
我們剛開始在 python 中學習課程,我無法解決這個問題。
我需要創建一個方法 reflect-x 以使變數 y 為負。這是我寫的代碼
class Point:
def __init__(self,x,y):
self.x=x
self.y=y
def reflect_x(self):
if self.y < 0:
self.y = self.y
else:
self.y = -abs(self.y)
def print(self):
a = self.x , self.y
print(tuple(a))
這就是網站用來檢查代碼是否正確的方法
p1 = Point(1, 4)
p1.reflect_x().print()
p2 = Point(-3, 5)
p2.reflect_x().print()
p3 = Point(-3, -5)
p3.reflect_x().print()
我不斷收到“AttributeError: 'NoneType' object has no attribute 'print'”,我不知道該怎么辦。
uj5u.com熱心網友回復:
歡迎編程!
您的方法定義reflect_x回傳None,它沒有成員函式print。您想要的是reflect_x回傳 a Point:
class Point:
def __init__(self,x,y):
self.x=x
self.y=y
def reflect_x(self):
return Point(self.x, -self.y)
def printout(self):
a = self.x , self.y
print(tuple(a))
p1 = Point(1, 4)
p1.printout()
p2 = Point(-3, 5)
p2.reflect_x().printout()
p3 = Point(-3, -5)
p3.printout()
注意我改變了print=> printout。不要在開發中使用保留關鍵字作為名稱!!!!
uj5u.com熱心網友回復:
您必須分別呼叫兩個方法 ( reflect, print)。
但是,如果您有本能以這種方式進行操作,則可以這樣處理
class Point:
def __init__(self,x,y):
self.x=x
self.y=y
def reflect_x(self):
if self.y > 0:
self.y = -abs(self.y)
return self # Return self will give you the instance itself
def print(self):
a = self.x , self.y
print(tuple(a))
p1 = Point(1, 4)
p1.reflect_x().print()
p2 = Point(-3, 5)
p2.reflect_x().print()
p3 = Point(-3, -5)
p3.reflect_x().print()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/521503.html
標籤:Python班级
