如何在Python中调用类中定义的函数?
import pypyodbc as pyodbc
Master_Conn = 'Driver={SQL Server};Server=server\23;Database=DBname;UID=username;PWD=password;'
Master_db = pyodbc.connect(Master_Conn)
Master_Cursor = Master_db.cursor()
class Test:
def __init__(self):
self.master_status = ""
def Getmodel(self):
self.master_status= dict(Master_Cursor.execute("select col1,col2 from tablename ").fetchall())
print (self.master_status)
Test.Getmodel()
使用上面的代码,我得到了
TypeError :Getmodel()缺少1个必需的位置参数:' self'
所以我尝试了Test.Getmodel(self)
,结果是
NameError :名称' self' 未定义。
我甚至尝试了使用if __name__== '__main__':
的两种情况,但也遇到了同样的错误。
答案 0 :(得分:2)
您将Getmodel
定义为实例方法。因此必须在类Test
的实例上调用它。
要创建类Test
的实例,您可以编写
instance_of_test = Test()
现在,您可以在Getmodel
instance_of_test
instance_of_test.Getmodel()
您可以通过编写
来缩短此过程Test().Getmodel()
请注意,self
(通常)在调用实例方法时会被隐藏地传递;它表示调用方法的实例。
考虑以下课程Pizza
class Pizza:
def __init__(self, size):
self.size = size
def get_size(self):
return self.size
首先,您需要创建Pizza
mypizza = Pizza(42)
然后您可以在get_size
mypizza
mypizza.get_size()
答案 1 :(得分:1)
如果首先实例化类Test
的对象,那么您的工作将会起作用。实例化只是意味着你调用类就好像它是一个方法。以下应该有效:
Test().Getmodel()
()
是实例化发生的原因所以现在self
基本上被传递给Getmodel()
方法,因为现在存在类Test
的对象。