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

How the instance method is being accessible without instantiation of any object?

我用下面两种方法创建了一个 class 'Employee'。我知道这些实例方法在不实例化对象的情况下是class本身无法访问的。

但是,下面的代码如何在没有任何对象实例化的情况下工作?

>>> 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'

我在上面的代码中没有看到任何对象实例化的迹象。但它正在工作,如何?

创建实例。这就是调用 class 所做的 ,它创建了一个实例:

>>> 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 在实例上然后调用它。