经典类属性和新式类属性

经典类只@property 没有setter 和deleter

class A(object):
    def __init__(self,price):
        self.__price=price
    @property
    def price(self):
        return self.__price
    @price.setter
    def price(self,value):
        self.__price=value
    @price.deleter
    def price(self):
        print ‘@price.deleter‘
a=A(1.23)print(a.price)a.price=23.4print(a.price)del a.price

结果:

1.23

23.4

del attr

 
时间: 2024-10-11 06:50:02

经典类属性和新式类属性的相关文章

python的继承,多继承,经典类的MRO,新式类的MRO,C3算法,super

#继承 class JiaoFu: def qd(self): print("教父带你祈祷") class Fu: def msj(self): print("alex喜欢msj") class Zi(Fu, JiaoFu): def dbj(self): print("刘伟喜欢大宝剑") z = Zi() z.msj() z.dbj() z.qd() class Base1: # Base1 object def func(self): pri

新式类 VS 经典类

一.概述 Python中支持多继承,也就是一个子类可以继承多个父类/基类.当一个调用一个自身没有定义的属性时,它是按照何种顺序去父类中寻找的呢?尤其是当众多父类中都包含有同名的属性,这就涉及到新式类 和 经典类的区别. 二.多继承 1 class Food(object): 2 3 def __init__(self, name, color): 4 self.name = name 5 self.color = color 6 7 def eatable(self): 8 print("%s

新式类与经典类的比较

新式类与经典类的区别: 首先: Python 2.x中默认都是经典类,只有显式继承了object才是新式类 Python 3.x中默认都是新式类,不必显式的继承object 即:新式类都从object继承,经典类不需要 其次: ------新式类对象可以直接通过__class__属性获取自身类型:type ------继承搜索的顺序发生了改变 经典类多继承属性搜索顺序: 先深入继承树左侧,再返回,开始找右侧 -- 即 经典类深度优先 新式类多继承属性搜索顺序: 先水平搜索,然后再向上移动    

Python新式类与经典类的区别

1.新式类与经典类 在Python 2及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性:反之,即不由任意内置类型派生出的类,则称之为“经典类”. “新式类”和“经典类”的区分在Python 3之后就已经不存在,在Python 3.x之后的版本,因为所有的类都派生自内置类型object(即使没有显示的继承object类型),即所有的类都是“新式类”. 官方文档 https://www.python.org/doc/new

python之继承、抽象类、新式类和经典类

一.上节补充1.静态属性静态属性 : 类的属性,所有的对象共享这个变量 如果用对象名去修改类的静态属性:在对象的空间中又创建了一个属性,而不能修改类中属性的值 操作静态属性应该用类名来操作 例1:请你写一个类,能够统计一共实例化了多少个对象? class Foo: count = 0 def __init__(self): Foo.count += 1 f1 = Foo() print(f1.count) # 1 f2 = Foo() f3 = Foo() f4 = Foo() f5 = Foo

Python中新式类 经典类的区别(即类是否继承object)

首先什么是新式类 经典类呢: #新式类是指继承object的类 class A(obect): ........... #经典类是指没有继承object的类 class A: ........... Python中推荐大家使用新式类 1.新的肯定好哈,已经兼容经典类 2.修复了经典类中多继承出现的bug 下面我们着重说一下多继承的bug 如图: BC 为A的子类, D为BC的子类 ,A中有save方法,C对其进行了重写 在经典类中 调用D的save方法 搜索按深度优先 路径B-A-C, 执行的为

经典类与新式类的继承顺序

经典类与新式类的继承顺序--两种不同的继承策略. 构造函数(初始化)__init__(self): 的继承策略,就是找哪个__init__(self)的问题 当实例本身有__init__(self) 的时候,会先执行自己的)__init__(self) 函数. 当实例本身没有__init__(self)的时候,它会去找父类中的)__init__(self)函数,此时有2种 继承策略,一种是深度优先,一种是广度优先. 我们看上面的图,先放两句概念上来吓唬吓唬你: 当类是经典类时,多继承情况下,会按

python 新式类和经典类(了解)

在python2中,有新式类和经典类和经典类的区别: 新式类 继承自object或object的子类,这样的类就叫新式类. class A(object): pass print(A.__bases__) 结果: (<class 'object'>,) 经典类 没有继承object或object的子类. >>> class A: ... pass ... >>> A.__bases__ () >>> 而在python3中不再有这种区别,所有

python中新式类和经典类的区别

1).python在类中的定义在py2-3版本上是使用的有新式类和经典类两种情况,在新式类和经典类的定义中最主要的区别是在定义类的时候是否出现引用object;如:经典类:Class 类名::而新式类定义的时候使用Class 类名(object): 2).定义来源:在Python 2及以前的版本中,由任意内置类型派生出的类(只要一个内置类型位于类树的某个位置),都属于“新式类”,都会获得所有“新式类”的特性:反之,即不由任意内置类型派生出的类,则称之为“经典类”. 3).衍生:“新式类”和“经典