En python, puede llamar a métodos estáticos/de clase desde una instancia, por ejemplo, en lo siguiente:
class User: # class/static NUM_USERS = 0 MAX_USERS = 10 @classmethod def users_left(cls): print ('%d users left' % (cls.MAX_USERS - cls.NUM_USERS)) # instance def __init__(self, name): self.name = name User.NUM_USERS += 1 def greet(self): print ('Hello %s' % self.name) u1 = User('Bob') u2 = User('Todd') u2.greet() u2.users_left() # users_left() is a classmethodSin embargo, en javascript parece que debe llamar explícitamente a la clase, por ejemplo:
class User { static NUM_USERS = 0; static MAX_USERS = 10; static users_left() { console.log(User.MAX_USERS - User.NUM_USERS); } constructor(name) { this.name = name; User.NUM_USERS ++; } greet() { console.log('Hello', this.name); } } u1 = new User('Bob'); u2 = new User('Todd'); u2.greet(); u2.constructor.users_left(); // ok User.users_left(); // ok u2.users_left(); // error¿Hay alguna manera de 'retroceder' en javascript como puede hacerlo en python, o debe invocar explícitamente la clase?