我对Python很陌生,只是真的在深入了解整个类/对象领域。这就是我真正要苦苦挣扎的事情:如果我在文件duck.py中有一个带有属性和成员函数的类“ duck”,而我在witch.py​​中使用了接受duck类的函数。我发出import语句

import duck


然后在我的职能:

def doesitfloat(myduck, mywitch):
    if myduck.boyancy() == 'floats':
    ...


“ doesitfloat”如何知道myduck是具有所述属性/成员函数的鸭子对象?我认为我已经掌握了类的一般概念,但是当我创建类时,如何在其他地方使用它呢?

编辑...
我的第一篇文章也是python的新手-我能说什么。让我解释一下..

在我的课程文件duck.py中,我有:

class duck:
    def buoyancy(self):
        return True


在另一个文件witch.py​​中,我有正确导入的dositfloat()函数

import duck

def doesitfloat(myduck, mywitch)
    if myduck.buoyancy() == 'floats':
    ...


“ doesitfloat”如何知道myduck是对象或类型duck?现在,在另一段代码中-甚至在第三个文件中,都声明了适当的导入,我具有以下内容:

someduck = duck
somewitch = witch

testingsomething = doesitfloat(someduck, somewitch)


显然,该类已声明,并且在我的第三个文件中本地声明了someduck和somewitch对象。但是,从未真正告诉函数“ doesitfloat”是鸭子对象。在其他语言中,“ doesitfloat”的声明将明确声明参数的类型,但是python ... ??抱歉,这让我感到困惑。

最佳答案

确实,您刚刚意识到python中的一个指针,甚至将其称为鸭子编程,因此可以说它像鸭子一样走路和说话,那就是鸭子。

该程序较早不知道给定对象是否将具有上述方法,它将尝试访问该方法(如果找不到则返回错误)。

开发人员可以使用代码来遵守代码的目的。

在python中,当您尝试运行myduck.boyancy()时,python尝试访问变量boyancy所引用对象的myduck属性/方法,如果找不到任何属性/方法,它将返回错误。

10-05 20:36
查看更多