Форум сайта python.su
Подскажите пожалуйста по сабжу:
пусть есть три класса A, B, C
class B( object ):
def __del__( self ):
print "del B"
pass
class A( object ):
def __del__( self ):
print "del A"
pass
class C( object ):
def __del__( self ):
print "del C"
pass
a = A( )
b = B( )
if True:
c = C()
pass
Отредактировано (Июль 5, 2010 13:57:27)
Офлайн
Возможно я чего то не понимаю, но вот такой код:
class B( object ):
def __del__( self ):
print "del B"
class A( object ):
def __del__( self ):
print "del A"
class C( object ):
def __del__( self ):
print "del C"
a = A( )
b = B( )
c = C()
del c
del b
del a
Офлайн
Не совсем понятно, зачем Вам это надо. Смею предположить, что класс, помеченый у Вас как “С” использует какие-то внешние ресурсы. И Вам их надо освободить до того, как будут уничтожены экземпляры классов “A” и “B”. И ресурсы Вы освобождаете, как принято в С++, в деструкторе.
Если это так, то в питоне есть директива with как раз для ограничения использования ресурсов. Вам необхдимо определить у python-класса два метода __enter__ и __exit__. Первый отвечает за получение ресурсов, а второй, за их освобождение. Ну и вынести процедуры получения и освобождения ресурсов в Вашем С++ коде в отдельный методы (которые следует напрямую вызывать из __enter__ и __exit__), поскольку python это скриптовый язык и за освобождение используемой памяти отвечает Garbage Collector. И когда и в какой последовательности ресурсы будут освобождаться, в общем случае неизвестно.
Офлайн