class Dog(object): sound = "woof" # class variable def __init__(self, name): self.name = name # instance variable def bark(self): print Dog.sound d = Dog("snowy") d.bark()
class Dog(object): sound = "woof" # class variable def __init__(self, name): self.name = name # instance variable @classmethod # decorator def bark(cls): print Dog.sound d = Dog("snowy") d.bark() # This works too! Only because it's a class method. Dog.bark()
class Animal(object): @classmethod def speak(cls): print cls.sound class Dog(Animal): sound = "woof" class Cat(Animal): sound = "meow" d = Dog() d.speak()
class AddressBook(object): def __init__(self): self.entries = {} a = AddressBook() a.entries["adit"] = "bluemangroupie@gmail.com" if "adit" in a.entries: print "address exists" else: print "nothing found."
Now with encapsulation!
class AddressBook(object): def __init__(self): self.entries = {} def add_entry(self, name, email): self.entries[name] = email def find(self, name): return self.entries.get(name, "nothing found.")
class Entry(object): def __init__(self, name, email="", phone="", address=""): self.name = name self.email = email self.phone = phone self.address = address class AddressBook(object): def __init__(self): self.entries = [] def add_entry(self, name, email="", phone="", address=""): self.entries += [Entry(name, email, phone, address)] def find(self, name): for entry in self.entries: if entry.name == name: return entry return None