Вы можете удалить имя , используя ключевое слово del
или встроенную функцию delattr
, но вы не можете удалить объект .(Объекты не удаляются, они получают собранный мусор , когда к ним больше не относятся имена.)
Если ваш метод выглядит следующим образом:
def fire_employee(employee):
...
и выназовите его как
fire_employee(Analyst_1)
, тогда объект , к которому относится имя Analyst_1
, будет тем же объектом, к которому относится имя employee
.Таким образом, даже если вы удалите одно из этих имен, сам объект все равно будет существовать, пока другое имя все еще ссылается на него.
Вы можете удалить имя из глобального пространства имен, если вы знаете, какое это пространство имен ичто это за имя:
def fire_employee(employee_name):
module_object = sys.modules[__name__]
delattr(module_object, employee_name)
, которое вы бы назвали так:
# Note that we pass a *string*, "Analyst_1", and not the *object*.
fire_employee('Analyst_1')
Но если вы собираетесь пойти по этому пути, вам будет лучше сохранитьимя сотрудника для сопоставления объекта в его собственной структуре данных, вероятно, объект dict
, как уже предлагалось.