Python有C#/ Java风格的接口吗?

sam*_*b8s 7 python oop

我作为C#程序员工作了几个月,并习惯了泛型/模板接口的概念,我可以将其传递给库,而无需关心对象是如何创建的.

我即将开始一个相对较大的项目,可能是在python中(我以前写了很多python,但主要是我自己的数据分析代码等),并且想知道这种语言中是否存在类似的概念?我试过谷歌搜索它并没有提出太多.

如果答案是否定的,那很好,但在这种情况下,人们通常做什么呢?

S.L*_*ott 17

如果答案是否定的,那很好,但在这种情况下,人们通常做什么呢?

鸭子打字.

重要的是通过放弃C#的技术包袱来处理Python.

学习Python作为一门语言.不要试图在Python和C#之间映射概念.那种方式就是疯狂.


"接口,不是泛型或模板"

无所谓.所有静态类型声明技术都不是必需的.对于这个问题,类型转换也是不必要的,以打破规则.


Sch*_*jer 5

python是动态类型的(在大多数情况下),不需要泛型/模板.


and*_*kus 5

我对接口的理解来自Java,所以希望它足够接近你的意思......

没有语法方法断言特定对象有一组方法和字段,因为Python使用动态类型/鸭子类型.如果要检查对象是否具有某个方法或字段,您可以:

  • 用反射挖掘它(这是最多的工作)
  • 检查你想要的东西__dict__(所有对象成员的字典). MyObj.__dict__.hasKey(o)我想是你想要的.(满容易)
  • 只需使用该对象并相信您,您的开发人员或您的用户已经为您提供了适当的对象.(最容易,但很危险)
  • 或者,执行上述操作并将其包装在try/except块中.(这对Java程序员来说很熟悉)

在Python中设计一组复杂的类是一种非常不同的体验,因为在C语言中做同样的事情,所以要做好准备做你可能感到不舒服的事情(如上面的选项3).祝好运!