No, no es necesario.
Por ejemplo.
class A(object):
def f():
print 'foo'
Y por supuesto puede usarlo, de esta manera:
a = A()
a.f()
De hecho incluso se puede definir una clase de esta manera.
class A:
pass
Sin embargo, definir __init__
es una práctica común, ya instancias de una clase suelen almacenar algún tipo de informtion o los datos del estado y los métodos de la clase ofrecen una manera de manipular o hacer algo con esa información de estado o datos. __init__
nos permite inicializar esta información de estado o datos al crear una instancia de la clase.
Aquí hay un ejemplo completo.
class BankAccount(object):
def __init__(self, deposit):
self.amount = deposit
def withdraw(self, amount):
self.amount -= amount
def deposit(self, amount):
self.amount += amount
def balance(self):
return self.amount
# Let me create an instance of 'BankAccount' class with the initial
# balance as $2000.
myAccount = BankAccount(2000)
# Let me check if the balance is right.
print myAccount.balance()
# Let me deposit my salary
myAccount.deposit(10000)
# Let me withdraw some money to buy dinner.
myAccount.withdraw(15)
# What's the balance left?
print myAccount.balance()
Una instancia de la clase se pasa siempre como primer argumento para un método de la clase. Por ejemplo, si hay class A
y tiene una instancia a = A()
, cada vez que llame a a.foo(x, y)
, Python
llama al foo(a, x, y)
de class A
automáticamente. (Observe el primer argumento.) Por convención, nombramos este primer argumento como self
.
¿Puedes explicar en detalle sobre el uso de __init __ ??? – NOOB
ITYM 'a = A()', aunque 'a = A' también funciona pero hace algo diferente. –
Alok, gracias. Arreglado. –