Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Tafs

Deletar objeto pelo self

Recommended Posts

Tafs

Olá.

Tenho uma dúvida. Se tenho uma classe chamada Bala, por exemplo, há alguma forma de apagá-la usando o self.?

Exemplo:

class Bala:
   def __init__(self,x,y):
       self.x = x
       self.y = y

Isso é para um jogo em pygame, no qual a bala segue uma determinada direção. Se eu quiser removê-la da tela, e apagá-la (assim não há espaço ocupado sem necessidade na memória), há alguma forma de fazer dentro da classe?

Li em alguns lugares na internet que um del self só apaga a referência que o self faz para aquela classe (ou algo assim), e não é isso que quero. Quero apagar o objeto.

Alguma dica? =)

Share this post


Link to post
Share on other sites
eatg75

Tambem penso que nao, pois self e uma referencia do objeto dentro da classe, e em algum momento dentro do metodo de uma operacao invocares algo como :

# (...) some code
self.x = x
self.y = y
del self # so apagas esta referencia para o objeto nao o objeto em si

Dentro da logica do teu jogo podes apagar a bala.


Victarion seized the dusky woman by the wrist and pulled her to him.

Victarion - She will do it. Go pray to your red god. Light your fire, and tell me what you see.

Moqorro's dark eyes seemed to shine.

Moqorro - I see dragons.

Share this post


Link to post
Share on other sites
Tafs

Sim, eu sei. No momento tenho uma função que detecta a posição das balas, e se passam da área da tela, elas são removidas de uma lista (e perdem todas as referências, virando lixo e sendo coletadas pelo GC do Python, se não me engano).

Porém, estou tendo aulas em ActionScript 3, e em um determinado jogo observei que o controle da posição da bola era feito de dentro do objeto (com o this. do AS3). Naquele exemplo, a bola só mudava de direção, não era apagada. Me pergunto se teria como apagá-la em Python, de dentro do próprio objeto. Ou seja: o objeto se mata.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.