如何在不实例化任何对象的情况下访问实例方法?
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
在实例上然后调用它。
我用下面两种方法创建了一个 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
在实例上然后调用它。