鸭子类型 - 当您需要具体类型时该怎么办?

发布于 2024-07-29 13:51:25 字数 338 浏览 7 评论 0原文

假设您正在使用动态语言(Python 等)制作计算器,并且您有一个 add 方法。

def Add(x, y)
    print x + y

现在,如果您要传递除数字之外的任何内容,那将是错误的,因此您需要进行一些数据类型检查。

Duck Typing 是关于对象而不是像上面的例子那样的参数吗?

有人能进一步解释一下吗?

编辑

我所说的对象是指:

Person.Quack()
Duck.Quack()

不关心传递给方法的内容。

Say you are doing a calculator in a dynamic language (Python etc...) and you have an add method.

def Add(x, y)
    print x + y

Now if you were to pass in anything but a number that would be wrong, so you need some datatype checking.

Is Duck Typing about objects as opposed to parameters like the above example?

Could anyone explain further?

Edit

By objects I mean:

Person.Quack()
Duck.Quack()

With no care about what gets passed into methods.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嗫嚅 2024-08-05 13:51:25

鸭子类型是指不关心您正在使用的对象是什么,只要它们支持必要的操作即可。 因此,如果 + 是字符串连接,那么将字符串传递给 Add 就可以了。 如果日期支持 + 操作,那么传递日期也可以。

Duck typing is about not caring what the objects you're working with are as long as they support the necessary operations. So if + is string concatenation then passing strings to Add would be fine. If dates support the + operation then passing dates would be fine as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文