如何在不实例化任何对象的情况下访问实例方法?

时间:2016-11-06 15:58:31

标签: python instantiation

我用两种方法创建了一个“Employee”类,如下所示。我知道没有对象的实例化,类本身就无法访问这些实例方法。

但是,如果没有任何对象实例化,以下代码如何工作?

>>> class Employee:
    def __init__(self,name):
        self.name = name
    def getName(self):
        return self.name

>>> Employee('John Doe').getName()       #how this code is working??
'John Doe'

我在上面的代码中没有看到任何对象实例化的迹象。但它有效,怎么样?

1 个答案:

答案 0 :(得分:0)

执行创建实例。这就是调用类所做的,它会创建一个实例:

>>> Employee('John Doe')
<__main__.Employee instance at 0x1042bab48>

您无需存储该实例即可在同一表达式中使用它。通过添加.getName()属性查找并调用Employee('John Doe')部分的结果,您只需链接查找方法并将其调用到同一语句中。

分配只是为刚刚创建的实例创建一个新引用,以便稍后可以引用该实例;稍后使用该命名引用会导致Python再次检索实例,以便您调用该方法。

将以下输出与上述实例的创建进行比较:

>>> employee = Employee('John Doe')
>>> employee
<__main__.Employee instance at 0x1042bac68>

唯一的区别是,现在我将创建实例的结果存储在名为employee的变量中。再次使用该名称会导致实例再次回显。

对于Python,使用Employee('John Doe').getName()employee.getName()之间没有区别,两者在实例上查找属性getName然后调用它。