Python学习之新式类和旧式类讲解
1. 旧式类
在 Python 2 中,类默认是旧式类,其定义方式与 Python 3 中定义类的方式不同。在 Python 2 中,为了定义一个类,需要继承自 object
类。
class OldStyleClass:
def __init__(self):
pass
在旧式类中,多重继承遵循深度优先原则。
2. 新式类
在 Python 3 中,类默认是新式类,同时 Python 2 也可以通过在类定义中继承 object
类来创建新式类。
class NewStyleClass(object):
def __init__(self):
pass
除了类定义中需要继承 object
类以外,新式类与旧式类的区别在于其内置的方法和属性上。
-
新式类中有一个
__class__
属性,而旧式类中没有。 -
新式类中
__getattr__
方法的优先级高于__getattribute__
方法,而旧式类中是相反的。 -
新式类中添加属性
property
时,可以通过@property
装饰器实现,而旧式类中需要用classmethod
或staticmethod
等装饰器实现。 -
新式类中默认使用的方法解析顺序为广度优先,而旧式类中是深度优先。
class NewStyleClass(object):
def __init__(self, value):
self.__value = value
@property
def value(self):
return self.__value
class OldStyleClass:
def __init__(self, value):
self.__value = value
def getValue(self):
return self.__value
使用新式类和旧式类分别创建一个对象,并对其中的属性 value
进行获取。
new_obj = NewStyleClass(value=1)
old_obj = OldStyleClass(value=1)
print(new_obj.value)
print(old_obj.getValue())
输出结果如下:
1
1
以上就是 Python 中新式类和旧式类的讲解及示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python学习之新式类和旧式类讲解 - Python技术站