如何在python中调用类方法
我有以下课程:如何在python中调用类方法,python,Python,我有以下课程: class SoftwarePackage: def __init__(self, name, description, order_of_installation, url): self.name = name self.description = description self.order_of_installation = order_of_installation self.url = "http:
class SoftwarePackage:
def __init__(self, name, description, order_of_installation, url):
self.name = name
self.description = description
self.order_of_installation = order_of_installation
self.url = "http://localhost:9090/api/software_package"
def create():
post_data = {"name": self.name, "description": self.description,
"order_of_installation": self.order_of_installation}
post_data = json.dumps(post_data)
req = urllib2.Request(url, post_data)
req.add_header('Content-Type', 'application/json')
return urllib2.urlopen(req, post_data)
当我尝试像这样调用“create”方法时:
sp = SoftwarePackage(name="my-package-1", description="my-package-1-desc", order_of_installation=0, url="")
sp.create()
我得到这个错误:
sp.create()
AttributeError: SoftwarePackage instance has no attribute 'create'
调用该类方法的正确方法是什么?您创建了一个嵌套函数;您将其缩进到far,它是
\uuuu init\uuu
方法的一部分。它当前是该方法中的局部变量,不可用
取消使整个函数与def\uuu init\uuu(…):
处于同一级别,并添加self
参数:
class SoftwarePackage:
def __init__(self, name, description, order_of_installation, url):
self.name = name
self.description = description
self.order_of_installation = order_of_installation
self.url = "http://localhost:9090/api/software_package"
def create(self):
post_data = {"name": self.name, "description": self.description,
"order_of_installation": self.order_of_installation}
post_data = json.dumps(post_data)
req = urllib2.Request(self.url, post_data)
req.add_header('Content-Type', 'application/json')
return urllib2.urlopen(req, post_data)
url
本地名称可能是实例上的url
属性,因此我将其替换为self.url您使创建了一个嵌套函数;您将其缩进到far,它是\uuuu init\uuu
方法的一部分。它当前是该方法中的局部变量,不可用
取消使整个函数与def\uuu init\uuu(…):
处于同一级别,并添加self
参数:
class SoftwarePackage:
def __init__(self, name, description, order_of_installation, url):
self.name = name
self.description = description
self.order_of_installation = order_of_installation
self.url = "http://localhost:9090/api/software_package"
def create(self):
post_data = {"name": self.name, "description": self.description,
"order_of_installation": self.order_of_installation}
post_data = json.dumps(post_data)
req = urllib2.Request(self.url, post_data)
req.add_header('Content-Type', 'application/json')
return urllib2.urlopen(req, post_data)
url
本地名称可能是实例上的url
属性,因此我将其替换为self.url
需要使用self
引用url
成员数据需要使用self