在方法中打印语句
Print statement inside method
所以我正在尝试编写一个函数来初始化两个点并输出以前制作的方法。
部分代码如下:
class Point(Geometry):
next_id = 0
def __init__(self,x,y,):
self.x = x
self.y = y
self.id = Point.next_id
Point.next_id += 1
def __str__(self):
return "(%0.2f, %0.2f)" % (self.x, self.y)
def quadrat(self):
if (self.x > 0 and self.y > 0):
return "Quad I"
elif (self.x < 0 and self.y > 0):
return "Quad II"
elif (self.x < 0 and self.y < 0):
return "Quad III"
elif (self.x > 0 and self.y < 0):
return "Quad IV"
elif (self.x == 0 and self.y == 0):
return "Origin"
elif (self.x == 0):
return "Y-axis"
elif (self.y == 0):
return "X-axis"
def distance(p0, p1):
dist = math.sqrt((p0.x - p1.x)**2 + (p0.y - p1.y)**2)
return dist
def equality():
if (self.x == self.y):
print "True"
else:
print "False"
def identify():
if(p0.id == p1.id):
print "True"
else:
print "False"
def pointTest():
global P1,P2
P1 = Point(-3,-3)
P2 = Point(0,0)
print "P1) ID =", P1.id,", Coordinates=", P1,", Location=",P1.quadrat()
print "P2) ID =", P2.id,", Coordinates=", P2,", Location=",P2.quadrat()
print "Distance between",P1,"and",P2,"is %0.2f" % (P1.distance(P2))
print "P1==P2?",P1==P2
print "P1 same as P2?",P1.id==P2.id
P1 = None
P2 = None
print pointTest()
当我的点在方法外定义并且 print
语句在方法外时,我的输出完美无缺。
但我需要在方法中初始化点,并且我的 print
语句也在方法中。
当我调用它时,出现 pointTest
未定义的错误。
我的输出需要如下所示:
<<<< print pointTest
这将给我打印语句的答案。
如果您需要使用不同于 __init__
的方法初始化您的变量,那么您必须将它们传递给初始化方法并直接访问它们的属性:
def pointTest(p1, p2):
p1.x = -3
p1.y = -3
p2.x = 0
p2.y = 0
p1 = Point()
p2 = Point()
pointTest(p1, p2)
或者将它们声明为全局变量,这通常不是一个好主意,但可以是一个快速的解决方法:
def pointTest():
global p1, p2
p1 = Point(-3, -3)
p2 = Point(0, 0)
p1 = None
p2 = None
pointTest()
在这两种情况下,您都可以在 pointTest
方法中添加对 print
的调用。
请注意,在第二种情况下,您无需将 p1
和 p2
声明为 None
,但最好将每个变量都显式声明。您不希望您的方法弹出您不知道的全局变量。
另外,您的 pointTest
方法似乎未定义。
关于您的原始缩进,您的 pointTest
方法似乎确实在代码块内。
因此,pointTest
方法可能仅在比您调用它的地方更深的范围内声明,因此未定义。要么把它放在那个块外面,要么把你所有的 print
s 放在那个块里。
所以我正在尝试编写一个函数来初始化两个点并输出以前制作的方法。
部分代码如下:
class Point(Geometry):
next_id = 0
def __init__(self,x,y,):
self.x = x
self.y = y
self.id = Point.next_id
Point.next_id += 1
def __str__(self):
return "(%0.2f, %0.2f)" % (self.x, self.y)
def quadrat(self):
if (self.x > 0 and self.y > 0):
return "Quad I"
elif (self.x < 0 and self.y > 0):
return "Quad II"
elif (self.x < 0 and self.y < 0):
return "Quad III"
elif (self.x > 0 and self.y < 0):
return "Quad IV"
elif (self.x == 0 and self.y == 0):
return "Origin"
elif (self.x == 0):
return "Y-axis"
elif (self.y == 0):
return "X-axis"
def distance(p0, p1):
dist = math.sqrt((p0.x - p1.x)**2 + (p0.y - p1.y)**2)
return dist
def equality():
if (self.x == self.y):
print "True"
else:
print "False"
def identify():
if(p0.id == p1.id):
print "True"
else:
print "False"
def pointTest():
global P1,P2
P1 = Point(-3,-3)
P2 = Point(0,0)
print "P1) ID =", P1.id,", Coordinates=", P1,", Location=",P1.quadrat()
print "P2) ID =", P2.id,", Coordinates=", P2,", Location=",P2.quadrat()
print "Distance between",P1,"and",P2,"is %0.2f" % (P1.distance(P2))
print "P1==P2?",P1==P2
print "P1 same as P2?",P1.id==P2.id
P1 = None
P2 = None
print pointTest()
当我的点在方法外定义并且 print
语句在方法外时,我的输出完美无缺。
但我需要在方法中初始化点,并且我的 print
语句也在方法中。
当我调用它时,出现 pointTest
未定义的错误。
我的输出需要如下所示:
<<<< print pointTest
这将给我打印语句的答案。
如果您需要使用不同于 __init__
的方法初始化您的变量,那么您必须将它们传递给初始化方法并直接访问它们的属性:
def pointTest(p1, p2):
p1.x = -3
p1.y = -3
p2.x = 0
p2.y = 0
p1 = Point()
p2 = Point()
pointTest(p1, p2)
或者将它们声明为全局变量,这通常不是一个好主意,但可以是一个快速的解决方法:
def pointTest():
global p1, p2
p1 = Point(-3, -3)
p2 = Point(0, 0)
p1 = None
p2 = None
pointTest()
在这两种情况下,您都可以在 pointTest
方法中添加对 print
的调用。
请注意,在第二种情况下,您无需将 p1
和 p2
声明为 None
,但最好将每个变量都显式声明。您不希望您的方法弹出您不知道的全局变量。
另外,您的 pointTest
方法似乎未定义。
关于您的原始缩进,您的 pointTest
方法似乎确实在代码块内。
因此,pointTest
方法可能仅在比您调用它的地方更深的范围内声明,因此未定义。要么把它放在那个块外面,要么把你所有的 print
s 放在那个块里。