Python类问题“;属性错误:';int';对象没有属性isSolvable“;

Python类问题“;属性错误:';int';对象没有属性isSolvable“;,python,class,Python,Class,我正在尝试学习Python中的类属性。我想解一个2X2方程。得到6个值后​​从用户那里,我尝试在类中进行事务处理,但它给出了一个错误。你能帮我吗 import numpy as np class HomogenEquation(): def __init__(self,number): self.number = number self.value=0 def isSolvable(self,a,d,b,c): r

我正在尝试学习Python中的类属性。我想解一个2X2方程。得到6个值后​​从用户那里,我尝试在类中进行事务处理,但它给出了一个错误。你能帮我吗

import numpy as np

class HomogenEquation():

     def __init__(self,number): 
        self.number = number
        self.value=0  

     def isSolvable(self,a,d,b,c):
         return (a*d)-(b*c)==0

     def getXY(self,a,b,c,d,e,f):
         x = np.array([[a, b],[c,d]])
         y = np.array([e, f])
         print(np.linalg.solve(x,y))


a=int(input("a: "))
a_value= HomogenEquation(a)

b=int(input("b: "))
b_value= HomogenEquation(b)

e=int(input("e: "))
e_value= HomogenEquation(e)

c=int(input("c: "))
c_value= HomogenEquation(c)

d=int(input("d: "))
d_value= HomogenEquation(d)

f=int(input("f: "))
f_value= HomogenEquation(f)

if a.isSolvable(a,d,b,c):

    getXY(a,b,c,d,e,f)
else:
    print("The equation has no solution.")


您引用了错误的对象<代码>a、b、c、d、e、f属于
int
类型,其中
a\u值、b\u值、c\u值、d\u值、e\u值、f\u值属于
均质方程类型

您可能想要:

if a_value.isSolvable(a,d,b,c):
    getXY(a,b,c,d,e,f)
else:
    print("The equation has no solution.")

您有以下类别:

class HomogenEquation:

 def __init__(self,number): 
    self.number = number
    self.value=0  

 def isSolvable(self,a,d,b,c):
     return (a*d)-(b*c)==0

 def getXY(self,a,b,c,d,e,f):
     x = np.array([[a, b],[c,d]])
     y = np.array([e, f])
     print(np.linalg.solve(x,y))
如果要收集用户输入,然后创建对象,可以执行以下操作:

# in the main method
a = int(input("Number: "))

# Collect all the other values the same way.

# Create an object of HomogenEquation
a_value = HomogenEquation(a)
print(a_value.isSolvable(a,b,c,d,e,f))

首先,如果我理解了你的类的目的,那么你的实现是错误的


以下是我的想法:

您不需要为每个数字创建该类的多个实例,因为您的类不是数字类。这是一门方程式课。假设如此,您的代码需要重新构造。可以进行多种实现,但您的实现对我来说毫无意义。
您可以改进的内容:

  • 把所有的数字一起传给你的方程课
  • 不为每个数字创建多个方程式实例(没有意义)
因此,尽可能少地更改代码以获得结果:

将numpy导入为np
类齐次方程():
定义初始(self,a,b,c,d,e,f):
#初始化包含所有变量的类
self.a=a
self.b=b
self.c=c
self.d=d
self.e=e
self.f=f
def可解(自):
返回值(self.a*self.d)-(self.b*self.c)=0
def getXY(自身):
x=np.array([[self.a,self.b],[self.c,self.d]]
y=np.array([self.e,self.f])
返回np.linalg.solve(x,y)
好了,现在班级结构有意义了(但仍有一些地方需要改进)


因此,要使用它,只需使用所有数字初始化实例并调用t的方法:

# btw this input looks not right, but I'll leave it

a=int(input("a: "))
b=int(input("b: "))
e=int(input("e: "))
c=int(input("c: "))
d=int(input("d: "))
f=int(input("f: "))

equation = HomogenEquation(a,b,c,d,e,f) # creating one instance for equation

if equation.isSolvable():
    print(equation.getXY())             # and calling it's methods
else:
    print("The equation has no solution.")
注释:此代码仍有多个缺点,但类的使用现在有了意义。

我希望这将有助于你今后的学习

a
是一个
int
a_值
是一个对象,该对象具有方法可解性。你调用了错误的对象。我如何将这些值发送到isSolvable?好的。我现在明白了。谢谢。程序逻辑正确吗?每次都没有解决办法。@YusufUçan-让我们一步一步地看一看,你有什么问题?我目前正在获取价值观​​来自用户。根据齐次方程的解,如果没有解,我得到“没有解”。我在“isSolvable”部分这样做。如果方程有解,我想转到“getXY”部分,找到解。然而,他在那部分给出了一个错误。我是Python新手。所以我问了很多问题。谢谢你的关注。numpy.linalg.linalgeror:奇异矩阵谢谢。我查一下密码。我希望它能工作:)它将帮助我理解Python中的类。