Python OOP 对象实例化



我是Python的新手,我对OOP有一个两难的境地(我熟悉OOP概念(。
基本上,我有一个带有静态类变量的类(counter显示我实例化了多少对象(:

class Employee:
   counter=0
   def __init__(self,name):
     self.name=name
     Employee.counter+=1

所以现在我实例化一个对象:

obj1=Employee("Alan")

我的问题是:当我接到这个电话时会发生什么?后面会发生什么,因为静态变量"计数器"递增,但可以访问像这样创建的对象?

Employee("foo")

<__main__.Employee object at 0x02A16870>

谢谢

首先,你需要counter+=1 Employee.counter += 1,以便代码的行为像你说的那样。否则,您将因尝试递增 __init__ 范围内未知的变量而收到错误。

由于您没有参考Employee("foo")因此它很快就会被垃圾收集并永远消失。但是,这并不能改变调用Employee.__init__以增加counter的事实。

Employee("foo")

上面创建的这个对象将在使用后立即丢失,并且无法重复使用,而当您实例化一个对象时,例如

obj1=Employee("Alan")

您在 obj1 中具有该对象的引用,并且可以重复使用它。

我的问题 当我接到这个电话时会发生什么?背后发生了什么

__init__函数是构造函数,每次创建类的新对象时都会调用它。由于此__init__函数递增计数器变量,因此每次创建对象时,都会调用__init__函数并递增计数器。

最新更新