我无法通过错误:
Traceback (most recent call last):
File "C:\Users\Dom\Desktop\test\test.py", line 7, in <module>
p = Pump.getPumps()
TypeError: getPumps() missing 1 required positional argument: 'self'
我检查了几个教程,但似乎与我的代码没有任何不同。我唯一能想到的是Python 3.3需要不同的语法。
class Pump:
def __init__(self):
print("init") # never prints
def getPumps(self):
# Open database connection
# some stuff here that never gets executed because of error
pass # dummy code
p = Pump.getPumps()
print(p)
如果我理解正确,self会自动传递给构造函数和方法。我哪里做错了?
Python中的self关键字类似于c++ / Java / c#中的this关键字。
在Python 2中,它是由编译器隐式完成的(是的,Python在内部进行编译)。
只是在Python 3中,你需要在构造函数和成员函数中显式地提到它。例子:
class Pump():
# member variable
# account_holder
# balance_amount
# constructor
def __init__(self,ah,bal):
self.account_holder = ah
self.balance_amount = bal
def getPumps(self):
print("The details of your account are:"+self.account_number + self.balance_amount)
# object = class(*passing values to constructor*)
p = Pump("Tahir",12000)
p.getPumps()
Python中的self关键字类似于c++ / Java / c#中的this关键字。
在Python 2中,它是由编译器隐式完成的(是的,Python在内部进行编译)。
只是在Python 3中,你需要在构造函数和成员函数中显式地提到它。例子:
class Pump():
# member variable
# account_holder
# balance_amount
# constructor
def __init__(self,ah,bal):
self.account_holder = ah
self.balance_amount = bal
def getPumps(self):
print("The details of your account are:"+self.account_number + self.balance_amount)
# object = class(*passing values to constructor*)
p = Pump("Tahir",12000)
p.getPumps()