从python类中的函数返回字符串

从python类中的函数返回字符串,python,string,class,return,Python,String,Class,Return,无法将字符串从一个python类返回到另一个python类 创建了两个类,需要从一个类到另一个类获取字符串。我一直收到消息- “app.classes.xxx”没有属性“returnDBString” Class1.py 从app.classes导入DBManager def客户设置(自身、用户id): db=DBManager.returnDBString() cnxn=pdc.连接(db) DBManager.py 类DBManager(): def returnDBString(): 返

无法将字符串从一个python类返回到另一个python类

创建了两个类,需要从一个类到另一个类获取字符串。我一直收到消息-
“app.classes.xxx”没有属性“returnDBString”

Class1.py

从app.classes导入DBManager
def客户设置(自身、用户id):
db=DBManager.returnDBString()
cnxn=pdc.连接(db)
DBManager.py

类DBManager():
def returnDBString():
返回“数据库字符串和连接信息”
def returnConnection():
return pdc.connect(returnDstring())
我本来希望在类中返回实际的字符串,但我一直得到错误


app.classes.DBManager'没有属性'returnDBString

这与返回字符串无关

出于某种原因,您将函数放在一个类中,该类恰好与它所在的模块同名。但是Python不是Java;函数不需要在类中,如果您确实定义了一个类,那么您需要专门导入它,而不仅仅是模块(或者,至少,通过模块引用它)


在任何情况下,您都应该删除类声明,只需将两个函数直接放在模块级。

如果将@classmethod放在DBManager下有意义,则用@classmethod装饰该方法。

您需要在
Class1.py
中实例化该类,并使其可用
pdc

db = DBManager.DBManager(pdc).returnDBString()
请注意参数,
DBManager()

您还需要像这样编写
DBManager
类:

类DBManager():
定义初始化(自我,pdx):
self.pdx=pdx
def returnDBString(自):
返回“数据库字符串和连接信息”
def回流连接(自):
返回self.pdc.connect(self.returnDBString())

这是一个关于类模块可用性的问题。 您的问题有两种解决方案:

1) 如果您在DBManager.py中创建了带有成员函数的类,并希望将其用于不同的文件,那么,您首先应该想到的是,没有类对象,类就什么都不是。您需要创建类的一个对象,并使用该对象调用returnDBString()。请记住,您还需要创建类的构造函数init,它在代码中是不完整的

def客户设置(自身,用户id):
DBObject=DBManager()
db=DBObject.returnDBString()


2) 在DBManager.py中没有类,删除类并在没有类的情况下使用相同的函数。在这种情况下,您当前的代码Class1.py可以工作

这听起来像是我想要的,但是当我从第一个类调用db=DBManager(pdc).returnConnection()时,我得到了一个'module'对象不可调用'error。对,模块和类具有相同的名称。这是不寻常的——在Python中,模块名称通常都是小写的,类是大小写的。我会更新。当然,这是假设你想要一个类。也可以在类之外定义函数,并直接调用它们。Python不是Java!这听起来更让人困惑。我有一个类,里面填充了我需要执行的不同db函数。如果我删除类DBManager(),您如何从class1.py调用returnDBString()?我不理解您的评论。如果导入class1,则可以调用
class1.returnDBString()
。或者在您的情况下,您已经从app.classes import DBManager执行了
,因此仍然可以执行
DBManager.returnDBString()
。关键是根本不需要在其中设置类。