Python разрушает два объекта, хотя (я думаю) я уничтожил только одинPython

Программы на Python
Ответить
Anonymous
 Python разрушает два объекта, хотя (я думаю) я уничтожил только один

Сообщение Anonymous »

Я изучаю Python и решил создать простой класс, который поможет мне понять. Класс предназначен для теннисных мячей.
У меня есть атрибут класса num_balls и атрибуты экземпляра серийного_номера и возраста.
Я создаю два экземпляра класса TennisBall и называю их ' а» и «б». Когда я вызываю деструктор для «a», экземпляр «b» также уничтожается.

Код: Выделить всё

class TennisBall:
ball_count = 0

def __init__(self, serial_number, age):
self.serial_number = serial_number
self.age = age
print("New Tennis Ball created {}!".format(self.serial_number))
TennisBall.ball_count +=1

def __del__(self):
print("Tennis ball {} has been deleted :(".format(self.serial_number))
TennisBall.ball_count -= 1

a = TennisBall(1234, 0)
print("Num balls: {} ".format(TennisBall.ball_count))

b = TennisBall(2345, 0)
print("Num balls: {} ".format(TennisBall.ball_count))

del a
print("Num balls after del ball a: {} ".format(TennisBall.ball_count))
Я уничтожил экземпляр «a», и он был удален, как и ожидалось. Однако экземпляр «b» также был уничтожен, хотя я этого не вызывал.
Вместо этого я попробовал уничтожить «b», и снова и «a», и «b» были уничтожены.< /п>

Подробнее здесь: https://stackoverflow.com/questions/792 ... ructed-one
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»