【发布时间】:2019-09-18 05:34:15
【问题描述】:
让我们假设以下情况:我有一个具有一些初始值的类。此外,我想在初始化新对象时提供传递用户定义方法的可能性。用户提前知道类的属性,可能希望在函数中考虑它们,例如:
class some_class():
def __init__(self, some_method):
# some initial values
self.a = 8
self.b = 12
# initializing a new object with a user-specific method
self.some_method = some_method
def some_method(self):
pass # this method shall be specified by the user
# user-specific function
def some_function():
return self.a + self.b
some_object = some_class(some_method = some_function)
print(some_object.some_method())
当然,给定的示例不起作用,但我希望它显示了我想要做的事情。我正在寻找一种在类外定义函数的方法,该函数是指初始化期间传递的对象的属性。
我尽量避免使用固定名称约定来解决问题,例如:
class some_class():
def __init__(self, some_method):
self.a = 8
self.b = 12
self.some_method = some_method
def some_method(self):
pass
def some_function():
return some_object.a + some_object.b # -> fixed names to avoid the problem
some_object = some_class(some_method = some_function)
print(some_object.some_method())
我认为我需要的是一种占位符或自我的替代品。有人有想法吗?
【问题讨论】:
-
如果你希望用户在使用你的类时提供额外的代码,他们应该继承它而不是仅仅实例化它。
-
您要做的是将函数绑定到对象。看到这个问题:stackoverflow.com/questions/1015307/…
-
确实,但它是可行的。我的意思是,这是python,各种loopyland的事情都是可能的。
-
感谢大家的许多建议。然而,布鲁斯是对的。跟随他的链接后,我意识到这正是我所搜索的。我只是不知道它叫什么,我搜索了什么
标签: python python-3.x