Python: 调用自身函数无法正常工作
Python: call to self function not working correctly
这似乎是一个非常简单的问题,虽然我有解决方法,但我想很好地解决它。
编辑:我使用的是 Django 系统,所以 groups
变量实际上是来自数据库的 inherited/retrieved)我只是想做一个最小的例子,但我意识到这不利于解决我的问题
我有一个 class:
class Invite(models.Model, IndexedModelMixin):
def get_associated_groups(self):
return self.groups
但是当我在别处调用get_associated_groups
时
def get_groups(resource_object):
resource_group_objects = resource_object.get_associated_groups()
其中Invite
是resource_object
,抛出这个错误:
get_associated_groups() missing 1 required positional argument: 'self'
我目前的解决方法是
resource_group_objects = resource_object.get_associated_groups(resource_object)
为什么 self 调用不是隐式的?
where Invite is the resource_object, this error is thrown:
这里的Invite
就是class,它应该是 class 实例 .
也就是说,你应该通过 "instance of the Ivaite
model/class" 而不是 Invite
class
invite_instance = Invite.objects.get(id=1)
get_groups(invite_instance) # calling the function
参考
1. Python calling method in class
示例
In [3]: class Foo:
...: names = ["Tony", "George"]
...:
...: def get_names(self):
...: return self.names
...:
...:
...: def retrieve_names(foo_instance):
...: return foo_instance.get_names()
In [4]:
In [4]: retrieve_names(Foo)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-3eb7dbe1c600> in <module>
----> 1 retrieve_names(Foo)
<ipython-input-3-dbb19979fd85> in retrieve_names(foo_instance)
7
8 def retrieve_names(foo_instance):
----> 9 return foo_instance.get_names()
TypeError: get_names() missing 1 required positional argument: 'self'
In [5]:
In [5]: foo_inst = Foo()
In [6]: retrieve_names(foo_inst)
Out[6]: ['Tony', 'George']
这似乎是一个非常简单的问题,虽然我有解决方法,但我想很好地解决它。
编辑:我使用的是 Django 系统,所以 groups
变量实际上是来自数据库的 inherited/retrieved)我只是想做一个最小的例子,但我意识到这不利于解决我的问题
我有一个 class:
class Invite(models.Model, IndexedModelMixin):
def get_associated_groups(self):
return self.groups
但是当我在别处调用get_associated_groups
时
def get_groups(resource_object):
resource_group_objects = resource_object.get_associated_groups()
其中Invite
是resource_object
,抛出这个错误:
get_associated_groups() missing 1 required positional argument: 'self'
我目前的解决方法是
resource_group_objects = resource_object.get_associated_groups(resource_object)
为什么 self 调用不是隐式的?
where Invite is the resource_object, this error is thrown:
这里的Invite
就是class,它应该是 class 实例 .
也就是说,你应该通过 "instance of the Ivaite
model/class" 而不是 Invite
class
invite_instance = Invite.objects.get(id=1)
get_groups(invite_instance) # calling the function
参考
1. Python calling method in class
示例
In [3]: class Foo:
...: names = ["Tony", "George"]
...:
...: def get_names(self):
...: return self.names
...:
...:
...: def retrieve_names(foo_instance):
...: return foo_instance.get_names()
In [4]:
In [4]: retrieve_names(Foo)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-3eb7dbe1c600> in <module>
----> 1 retrieve_names(Foo)
<ipython-input-3-dbb19979fd85> in retrieve_names(foo_instance)
7
8 def retrieve_names(foo_instance):
----> 9 return foo_instance.get_names()
TypeError: get_names() missing 1 required positional argument: 'self'
In [5]:
In [5]: foo_inst = Foo()
In [6]: retrieve_names(foo_inst)
Out[6]: ['Tony', 'George']