多态:(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。
例:
class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def whoAmI(self): return 'I am a Person, my name is %s' % self.name class Student(Person): def __init__(self, name, gender, score): super(Student, self).__init__(name, gender) self.score = score def whoAmI(self): return 'I am a Student, my name is %s' % self.name class Teacher(Person): def __init__(self, name, gender, course): super(Teacher, self).__init__(name, gender) self.course = course def whoAmI(self): return 'I am a Teacher, my name is %s' % self.name def who_am_i(x): print (x.whoAmI()) p = Person('Tim', 'Male') s = Student('Bob', 'Male', 88) t = Teacher('Alice', 'Female', 'English') who_am_i(p) who_am_i(s) who_am_i(t)
这就实现了多态,
类属性:属于类的成员,属于对象共有的,无论哪个对象或者类去改变它的值都改变了
类方法:在方法上添加@classmethod
@classmethod
def class_method(cls):
可以通过类方法调用属性,也可以通过对象调用类属性
静态方法:方法前加@staticmethod,静态方法没有参数,静态方法即和类没关系,也和对象没有关系,也可以通过被类和对象调用
工厂类:有一些子类,在一个类中生成很多对象,简单工厂模式
Pass
__new__(clas):#用来创建对象,而且必须有返回值
return object__new__(cls)
Python__new__(cls)就是Java里的构造方法()
单例:单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例
例如:
class Singleton(object): def __new__(cls): if not hasattr(cls, "_instance"): cls._instance = object.__new__(cls) print("初始化对象完成!") return cls._instance else: print("已有对象,返回当前已有的对象!") return cls._instance b = Singleton() b1= Singleton()
虽然创建了两个实例分别为b,b1,但是这是同一个对象,我们可以通过id(b,b1)它们地址是一样的
这就是一个简单的单例.
当有属性时,需要在__new__()中添加属性.
简单工厂模式:
class Hambuger: def show(self): print("这是汉堡...") class chickenHambuger(Hambuger): def show(self): print("这是鸡腿汉堡...") class fishHambuger(Hambuger): def show(self): print("这是麦香鱼汉堡...") class factory: @classmethod def createHambegur(cls,hum): if hum=="chicken": return chickenHambuger() else: return fishHambuger() c=factory.createHambegur("chicken") c.show()
简单工厂模式其实就是一种多态实现的