如何避免在Python中重复类实例?

时间:2019-04-14 16:10:15

标签: python-3.x class

使用__init __()函数创建类实例时,避免重复的实例的好方法是什么。 这个问题是this issue的结果。

上下文(使用员工类示例):

  1. 让我说我有一个雇员班级:__init __(自己,姓名,部门)
  2. 我还有一个方法employee.info(self),可打印出任何雇员的姓名和部门。
  3. 但是,用户可以通过调用a = employee(args ..)来添加员工。他们可以使用相同的实例变量a,但使用不同的员工姓名多次执行此操作。
  4. 如果他们尝试打印a.info(),这将导致问题,因为每次将打印不同的员工姓名。

有更好的方法吗?我知道可以通过__init __()“传递”并定义一个新方法来创建实例。

预期结果:

>>Adam=employee('marketing')
>>Adam.info()
>>Adam works in marketing.

OR

>>a=employee('Adam','marketing')
>>a=employee('Mary','marketing')
>>Error: employee instance with identifier "a" already exists. 
>>Use employee.update() method to modify existing record.

有没有更清洁的方法? (您可能会猜到,我仍在学习python)。 还是写一个显式函数(而不是类方法)来添加新员工的好习惯?

1 个答案:

答案 0 :(得分:0)

尝试什么是不可能的,因为在

a=employee('Adam','marketing')

a不是对象,而是指向对象employee('Adam','marketing')的变量。

完成时

a=employee('Mary','marketing')

您对python说,a现在必须不指向对象employee('Adam','marketing'),而必须指向对象employee('Mary','marketing')。然后,如果没有更多变量引用对象employee('Adam','marketing'),则垃圾收集器将销毁它。

您必须考虑在python中所有对象都是对象,而不是仅是用于操纵对象的变量。