如何在 python 中调用另一个 class 的函数?
How to call a function from another class in python?
我对 python 和 Sikuli 软件还很陌生。 :(
我试图从另一个 class 调用一个函数。
这是一个包含函数的 class。
class Reader():
def getUsername():
....
return username
def getAddress():
.....
return address
这是另一个调用上述函数的 class。
class DisplayInfo():
reader = Reader()
uName = reader.getUsername()
addr = reader.getAddress()
......
......
但是当我 运行 DisplayInfo class 时,我得到了这个错误。
uName = reader.getUsername()
TypeError: getUsername() takes no arguments (1 given)
谁能帮我解决这个问题?提前致谢!
定义 Reader
时,函数需要定义为采用 self
参数,这是调用它们的 class 的实例:
class Reader():
def getUsername(self):
....
return username
def getAddress(self):
.....
return address
你得到的错误是因为 Python 试图将 class 实例传递给函数,但由于它们被定义为不接受任何参数,因此它无法传递那个参数。
如下定义你的函数。
def getUsername(self):
def getAddress(self):
您的代码中缺少 self。
Python 将对象隐式传递给方法调用,但您需要为其显式声明参数。这通常被命名为 self:
def getUserName(self)
def getAdress(self)
试试这个。
class Reader():
def getUsername(self):
username = "name"
return username
def getAddress(self):
address = 'address'
return address
class DisplayInfo():
reader = Reader()
uName = reader.getUsername()
addr = reader.getAddress()
reader = Reader()
uName = reader.getUsername()
uAddress = reader.getAddress()
Python 总是隐式地将 object 传递给函数,这就是你得到错误的原因。您可以通过将其更改为
来解决此问题
getUsername(self):
...
return username
类就是因为这个原因,所以你把函数和变量封装成object只对自己可用。为了让完全不同的 object 能够访问其他东西固有的东西,有以下三种方法:
实例化
基本上就是您刚才所做的,您实例化了一个 reader object 并调用了它的方法。
如果 class 之一是 child class,child 可以使用 parents 方法。
你让 class 继承了另一个 class 的属性。一旦你掌握了它,它会非常强大和有趣。
python 模块中的每个函数都需要将第一个参数作为 self,
这个没有什么具体的意思,但是如果不按照惯例肯定会进入错误状态。
class Reader():
def getUsername(self):
....
def getAddress(self):
.....
您可以参考以下文档了解更多信息Python Classes
我对 python 和 Sikuli 软件还很陌生。 :( 我试图从另一个 class 调用一个函数。 这是一个包含函数的 class。
class Reader():
def getUsername():
....
return username
def getAddress():
.....
return address
这是另一个调用上述函数的 class。
class DisplayInfo():
reader = Reader()
uName = reader.getUsername()
addr = reader.getAddress()
......
......
但是当我 运行 DisplayInfo class 时,我得到了这个错误。
uName = reader.getUsername()
TypeError: getUsername() takes no arguments (1 given)
谁能帮我解决这个问题?提前致谢!
定义 Reader
时,函数需要定义为采用 self
参数,这是调用它们的 class 的实例:
class Reader():
def getUsername(self):
....
return username
def getAddress(self):
.....
return address
你得到的错误是因为 Python 试图将 class 实例传递给函数,但由于它们被定义为不接受任何参数,因此它无法传递那个参数。
如下定义你的函数。
def getUsername(self):
def getAddress(self):
您的代码中缺少 self。
Python 将对象隐式传递给方法调用,但您需要为其显式声明参数。这通常被命名为 self:
def getUserName(self)
def getAdress(self)
试试这个。
class Reader():
def getUsername(self):
username = "name"
return username
def getAddress(self):
address = 'address'
return address
class DisplayInfo():
reader = Reader()
uName = reader.getUsername()
addr = reader.getAddress()
reader = Reader()
uName = reader.getUsername()
uAddress = reader.getAddress()
Python 总是隐式地将 object 传递给函数,这就是你得到错误的原因。您可以通过将其更改为
来解决此问题getUsername(self):
...
return username
类就是因为这个原因,所以你把函数和变量封装成object只对自己可用。为了让完全不同的 object 能够访问其他东西固有的东西,有以下三种方法:
实例化
基本上就是您刚才所做的,您实例化了一个 reader object 并调用了它的方法。
如果 class 之一是 child class,child 可以使用 parents 方法。
你让 class 继承了另一个 class 的属性。一旦你掌握了它,它会非常强大和有趣。
python 模块中的每个函数都需要将第一个参数作为 self, 这个没有什么具体的意思,但是如果不按照惯例肯定会进入错误状态。
class Reader():
def getUsername(self):
....
def getAddress(self):
.....
您可以参考以下文档了解更多信息Python Classes