如何在之前或之后向现有功能添加代码?
例如,我有一堂课:
class A(object):
def test(self):
print "here"
我该如何编辑类元编程,以便执行此操作
class A(object):
def test(self):
print "here"
print "and here"
也许有某种方法可以附加另一个功能进行测试?
添加另一个功能,例如
def test2(self):
print "and here"
并将原件更改为
class A(object):
def test(self):
print "here"
self.test2()
有没有办法做到这一点?
如果需要,可以使用装饰器来修改功能。但是,由于它不是在函数初始定义时应用的装饰器,因此您将无法使用@
语法糖来应用它。
>>> class A(object):
... def test(self):
... print "orig"
...
>>> first_a = A()
>>> first_a.test()
orig
>>> def decorated_test(fn):
... def new_test(*args, **kwargs):
... fn(*args, **kwargs)
... print "new"
... return new_test
...
>>> A.test = decorated_test(A.test)
>>> new_a = A()
>>> new_a.test()
orig
new
>>> first_a.test()
orig
new
请注意,它也会修改现有实例的方法。
编辑 :使用和将装饰器的args列表修改为 更好的 版本args``kwargs
问题内容: 我有一个问题,我不知道如何将textview添加到gridlayout。我有一个xml: 并希望动态地执行此xml代码。我怎样才能做到这一点?我知道如何创建textview,但我不知道如何添加到gridlayout … 问题答案: 您不能将代码粘贴到其中,并且需要对其进行测试和更改以使其适合(它不仅会起作用)。但这应该给您大致的想法。
问题内容: 我知道我可以通过执行以下操作来向对象动态添加实例方法: 稍后我可以打电话给我,自我将被正确绑定,一切正常。 现在,我的问题是:如何做完全相同的事情来获得用@property装饰新方法的行为? 我猜是这样的: 但是,这样做会返回一个属性对象。 问题答案: 在描述对象需要住 类 , 未 在 实例中 ,有你想要的效果。如果您不想更改现有的类以避免更改其他实例的行为,则需要创建“每个实例的类”
问题内容: 我有一个使用插件体系结构的Java Web应用程序。我想知道是否有人可以通过Web应用程序运行时通过Serlvet映射到servletconfig来添加servlet的解决方案?这样的想法是,可以将一个类添加到/ WEB-INF / classes文件夹中,并使其成为Servlet,而无需重新启动Web应用程序。同样,如果用户选择删除“插件”,则让代码从servletconfig中删除
问题内容: 我将此组合框添加到面板中。如果直接在数据库中添加一些项目,则希望那些新添加的项目显示在组合框中。 我可以在调试时看到这些值,但是这些值不会出现在我的组合框中。 如何在不关闭面板的情况下将那些新添加的值放入组合框? 问题答案: 如何使用ComboBoxModel?像这样…
因此,我的问题是面板被插入到JScrollPane中,这些面板的大小正在减小,但没有滚动条。 这是我的代码,我已经播种很远:
我是JavaFX新手。我想与我的场景互动 例如:当我单击一个按钮时,我添加了一个新按钮,Textfield。。在里面。然而,我搜索了一下,却没有找到满意的答案! 我的fxml文件: 我的控制器: }