多态:
类属性:属于类的成员,属于对象共有的
类方法:在方法上添加@classmethod
@classmethod
def class_method(cls):
可以通过类方法调用类属性,也可以通过对象调用类属性
静态方法:方法前加@staticmethod,静态方法没有参数,静态方法既和类没关系,也和对象没关系,也可以通过类和对象调用。
工厂类:有一些子类,在一个类中生成很多对象,简单工厂模式
pass
_new_(cls):#用来创建对象,而且必须要有返回值
return object._new_(cls)
可以用id(cls)看地址
当有属性时,需要在_new_()中也添加属性
单例:
#单例 class singleton: __instance=None def __new__(cls): if cls.__instance==None: cls.__instance==object.__new__(cls) return cls.__instance else: return cls.__instance s=singleton() ss=singleton() print(id(s)) print(id(ss))
多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。
多态即多种形态,在运行时确定其状态,在编译阶段无法确定其类型,这就是多态。Python中的多态和Java以及C++中的多态有点不同,Python中的变量是弱类型的,在定义时不用指明其类型,它会根据需要在运行时确定变量的类型(个人觉得这也是多态的一种体现),并且Python本身是一种解释性语言,不进行预编译,因此它就只在运行时确定其状态,故也有人说Python是一种多态语言。在Python中很多地方都可以体现多态的特性,比如 内置函数len(object),len函数不仅可以计算字符串的长度,还可以计算列表、元组等对象中的数据个数,这里在运行时通过参数类型确定其具体的计算过程,正是多态的一种体现。有些朋友提出Python不支持多态,我是完全不赞同的.
Python以它这种独有的方式体现多态的根本原因我觉得有两点:1)Python是解释性语言;2)Python中变量是弱类型的。
本文探讨了Python中的多态性概念,包括类属性、类方法、静态方法和工厂类。多态允许不同对象对同一消息做出不同响应,Python通过在运行时确定对象类型来实现这一特性。文中还提到了单例模式,并指出Python的弱类型和解释性使得它在许多场景下体现出多态的特性,如内置函数len()的灵活应用。
943

被折叠的 条评论
为什么被折叠?



