相关疑难解决方法(0)

如何在python类中检测重复的方法名称?

在编写单元测试时,我有时剪切并粘贴测试,不记得更改方法名称.这导致覆盖先前的测试,有效地隐藏它并阻止它运行.例如;

class WidgetTestCase(unittest.TestCase):

  def test_foo_should_do_some_behavior(self):
    self.assertEquals(42, self.widget.foo())

  def test_foo_should_do_some_behavior(self):
    self.widget.bar()
    self.assertEquals(314, self.widget.foo())
Run Code Online (Sandbox Code Playgroud)

在这种情况下,只会调用后一个测试.是否有一种以编程方式捕获此类错误的方法,而不是直接解析原始源代码?

python

21
推荐指数
3
解决办法
3625
查看次数

staticmethod和classmethod装饰器可以用纯Python实现吗?

这是一个学术问题,不仅仅是一个实际问题.我正在尝试深入研究Python的基础,我想知道:如果我愿意,我可以在纯Python中实现staticmethodclassmethod装饰器吗?

对于staticmethod也许我可以保持一个参照原有的功能,并调用它省略了第一个参数?

对于classmethod也许我可以保持一个参照原有的功能,并把它传递的第一个参数的类型,而不是争论本身?(我怎么处理它直接在课堂上调用?)

同样,并不是我想在我的程序中实际实现它; 我想学习语言是如何运作的.如果有可能,我会非常感谢代码示例.如果没有,我希望解释为什么理论上无法做到.谢谢!

编辑:感谢您的答案和描述符协议的参考!作为进一步扩展我对Python的理解的一种方法,我想再问两件事:

  • 这可以在没有描述符协议的情况下完成,例如在我们的类中实现__ call __特殊方法吗?

  • 描述符协议在Python 2.7和Python 3.x中的工作方式是否相同?

再次感谢!

python static-methods decorator class-method

10
推荐指数
1
解决办法
1781
查看次数

标签 统计

python ×2

class-method ×1

decorator ×1

static-methods ×1