我在尝试用一个类调用一个函数时遇到麻烦,而该类又调用了另一个类中存在的单独函数。
class PrintNum():
def get_square(self):
Numbers.square_Num(self)
def Print_Num(self):
Numbers.square_Num(self)
class Numbers():
def __init__(self, num1,num2):
self.num1=num1
self.num2=num2
def show_num(self):
return self.num1,self.mum2,
def square_Num(self):
self.num1,self.mum2, = self.num1**2,self.num2**2
p2= PrintNum(3,6)
p2.get_square()
print(p2.Print_Num)
答案 0 :(得分:0)
您想要这样的东西:
class PrintNum:
def get_square(self):
Numbers().square_Num()
def Print_Num(self):
Numbers().square_Num()
Numbers
类的方法是 instance 方法-需要在类的 instance 而不是类本身上调用它们。我们通过调用类来创建实例:
numbers_instance = Numbers()
因此,在PrintNum
的方法中,我们在调用方法之前创建Numbers
的实例。
答案 1 :(得分:0)
在这种情况下,您没有正确使用类。参数self
引用您为给定类创建的对象实例。您不应尝试在类的实例方法之外访问它。尝试将self
参数传递给另一个类将不起作用,因为它们将代表两个不同的对象实例。在这种情况下,您根本不会实例化Numbers
对象,因此它没有实例。要正确执行此操作,请在PrintNum
内实例化Numbers实例,然后按如下所示调用其实例方法:
class PrintNum():
def __init__(self):
self.numbers = Numbers()
def get_square(self):
return self.numbers.square_number()
def print_number(self):
return self.numbers.show_num()
class Numbers():
def __init__(self):
self.num1=2
self.num2=3
def show_num(self):
return self.num1,self.mum2
def square_number(self):
self.num1,self.mum2 = self.num1**2,self.num2**2
p2= PrintNum()
p2.get_square()
print(p2.print_number())
答案 2 :(得分:0)
要从类中获得此类行为,您需要使用继承或嵌入类。尽管我觉得继承可能更适合这里,但我还是使用嵌入来解决上述问题。
class PrintNum():
def __init__(self,a1,a2):
self.numbers = Numbers(a1,a2)
def get_square(self):
self.numbers.square_Num(self)
def Print_Num(self):
print(self.numbers)
class Numbers():
def __init__(self, num1,num2):
self.num1=num1
self.num2=num2
def __repr__(self):
print(self.num1)
return self.num2
def square_Num(self,*args,**kwargs):
self.num1,self.num2 = self.num1**2,self.num2**2
p2= PrintNum(3,6)
p2.get_square()
p2.Print_Num()