【发布时间】:2014-08-05 18:37:21
【问题描述】:
我觉得在处理常规函数时我对使用装饰器有很好的掌握,但是在派生类中使用装饰器的基类方法和将参数传递给所述装饰器之间,我不知道下一步该做什么。 这是一段 sn-p 代码。
类验证对象: ... def apply_validation(self, field_name, code): def 包装(自我,f): self._validations.append(验证(字段名称,代码,f)) 返回 f 返回包装 类测试(ValidatedObject): …… @apply_validation("_name", "哦不!") def name_validation(self, name): 返回名称==“雅各布”如果我按原样尝试,我会得到“apply_validation”未找到。
如果我用@self.apply_validation 尝试它,我会发现找不到“自我”。
我也一直在搞砸 apply_validation 一个没有成功的类方法。
有人能解释一下我做错了什么,以及解决这个问题的最佳方法吗?谢谢。
【问题讨论】:
-
每个方法的每个实例都需要自己的
Validation对象吗? -
@user2357112 我在想每个测试对象只有一个验证对象。 Validation 对象包含所有验证测试的列表,当您调用一个方法来运行所有验证时,它只是通过列表。
-
@jacobcase94 检查我的答案。这有帮助吗?我不知道
ValidatedObject是什么,所以我尽量做到简单。或者如果我误解了你的问题? -
应该
ValidatedObject子类从彼此继承验证?也就是说,如果一个类test2继承自您的示例代码中的test,那么test2._validations是否应该包含为"_name"创建的Validation实例,还是应该将其留给其他继承的方法? -
@Blckknght 那会更好。