Que tal, he estado aprendiendo un poco lo fundamental en POO con python y me he quedado un poco patidifuso con las variables estáticas y con la clase principal, espero que alguien se tome la molestia de ayudar a este pobre novato.
Bueno, mi primer lenguaje fue Java, lo tengo aprendido pues, algo bien, asi que intentare primero explicar lo que quiero hacer en python, pero con java o algo asi, para que me entiendan mejor.
En python he visto que llaman variables estáticas de clase (o una cosa asi) a las variables que yo conozco como variables de clase o bueno, mas específicamente a como yo las conozco se le llaman variables de instancia, y si quiero que la variable sea estática (que en todos los objetos instanciados sea la misma variable), seria algo así por ejemplo:
class Hola{
static String hola;
}
pero veo que en Python seria algo asi
class Hola():
hola = None
pero al instanciar 2 objetos, si a uno le modifico el valor de hola, en el otro objeto instanciado me sigue mostrando None, entonces ¿realmente es una variable estatica? o lo llaman asi pero no por que haga lo mismo que hace en java?
(http://i.imgur.com/jOUkZbP.png)
otra pregunta, al parecer se utiliza self como lo que seria en Java como this... y cuando creamos un método en la lista de parametros hay que incluir self si utilizaremos alguna variable de instancia a la cual hacer referencia o siempre hay que utilizar self?
y por ultimo... ¿que rayos pasa con el método main? Cual seria la instuccion que hay que darle a python lo equivalente que es en Java public static void main(String[]args)?
Espero que me puedan ayudar... Gracias de antemano.
Saludos y feliz año nuevo!
def main():
# my code here
if __name__ == "__main__":
main()
De las tres dudas ya tienes la del main. Te ayudo con ésta, pues la primera sobre los static no la sé.
Citarcuando creamos un método en la lista de parametros hay que incluir self si utilizaremos alguna variable de instancia a la cual hacer referencia o siempre hay que utilizar self?
El self en la firma del método lo convierte, de alguna manera, en un método de instancia. Por el contrario, si declara sun método
miMetodo() sin self sería un método estático y no podrías acceder aatributos de instancia... Exactamente lo que ya indicabas.
Saludos
Perfecto, muchas gracias a ambos, solo me falta entender mi ultima duda
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
De las tres dudas ya tienes la del main. Te ayudo con ésta, pues la primera sobre los static no la sé.
Citarcuando creamos un método en la lista de parametros hay que incluir self si utilizaremos alguna variable de instancia a la cual hacer referencia o siempre hay que utilizar self?
El self en la firma del método lo convierte, de alguna manera, en un método de instancia. Por el contrario, si declara sun método
miMetodo() sin self sería un método estático y no podrías acceder aatributos de instancia... Exactamente lo que ya indicabas.
Saludos