Python自学之乐-继承的新式类与经典类

#Author:clarkclass Animal(object):#python3中新式类写法,继承object(所有类的基类)    #kind = ""    #类属性    def __init__(self,name,age,food):#name等是实例属性  init方法叫做构造方法__del__是析构方法        self.Name = name        self.Age = age        self.food = food    def eat(self):        print("%s is eat %s" %(self.Name,self.food))    def barking(self):        print("%s is barking"%self.Name)

class dog(Animal):   #狗是动物的子类,如果增加新的属性并且要继承父类的属性,按照下面这样去写    def __init__(self,name,age,food,kind):        #Animal.__init__(self,name,age,food)   经典类的写法,这种写法比较繁琐,如果该类继承多个类的相同属性,就需要每个类都要写,新式类使用super写法,写一个就行        super(dog,self).__init__(name,age,food)        self.kind = kind    def barking(self):        print("the barking of %s is wangwangwang!"%self.Name)class cat(Animal):    def __init__(self,name,age,food,kind):        #Animal.__init__(self,name,age,food)        super(cat,self).__init__(name,age,food)        self.kind = kind    def barking(self):        print("the barking of %s is miaomiaomiao"%self.Name)

dog_teddy = dog("ahuang",3,"bone","teddy")dog_teddy.eat()cat_xiaohua = cat("xiaohua",2,"fish","cat")cat_xiaohua.eat()dog_teddy.barking()cat_xiaohua.barking()

运行结果为:

ahuang is eat bone
xiaohua is eat fish
the barking of ahuang is wangwangwang!
the barking of xiaohua is miaomiaomiao

时间: 2024-10-29 13:52:09

Python自学之乐-继承的新式类与经典类的相关文章

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新式类和经典类的区别

@Python新式类和经典类的区别 class ClassicClass(): pass class NewStyleClass(object): pass x1 = ClassicClass() x2 = NewStyleClass() print x1.__class__, type(x1) print x2.__class__, type(x2) 输出结果: __main__.ClassicClass <type 'instance'> <class '__main__.NewSt

Python新式类与经典类的区别

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

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

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

python中的__new__与__init__,新式类和经典类(2.x)

在python2.x中,从object继承得来的类称为新式类(如class A(object))不从object继承得来的类称为经典类(如class A()) 新式类跟经典类的差别主要是以下几点: 1. 新式类对象可以直接通过__class__属性获取自身类型:type 2. 继承搜索的顺序发生了改变,经典类多继承时属性搜索顺序: 先深入继承树左侧,再返回,开始找右侧(即深度优先搜索);新式类多继承属性搜索顺序: 先水平搜索,然后再向上移动 例子: 经典类: 搜索顺序是(D,B,A,C)>>&

python中新式类和经典类

python中的类分为新式类和经典类,具体有什么区别呢?简单的说, 1.新式类都从object继承,经典类不需要. Python 2.x中默认都是经典类,只有显式继承了object才是新式类 Python 3.x中默认都是新式类,不必显式的继承object 2.经典类继承深度优先,新式类继承广度优先. 在多重继承关系下,子类的实例对象想要调用父类的方法,向上寻找时的顺序. 3.新式类相同父类只执行一次构造函数,经典类重复执行多次. class A: def __init__(self): pri

继承、派生、新式类与经典类

目录 继承 1.什么是继承? 2.为什么要继承? 3.如何实现继承? 寻找继承关系 继承背景下对象属性的查找顺序 派生 什么是派生? 子类派生出新的属性,并重用父类的属性 新式类与经典类 钻石继承(菱形继承) 通过继承实现修改json模块数据类型 继承 Downwards is the only way forwards .--<盗梦空间> 面向对象阶段最重要的知识点:继承.封装.多态 1.什么是继承? 指新建类的方法,新建的类称之为子类或者派生类,子类继承的类叫做父类,也称之为基类或者超类.

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

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

Python 新式类与经典类

新式类,经典类 查询匹配 广度查询 横着对每个类进行查询 深度查询 无视平级类,直接寻找下级类 #python 3.0 #新式类 广度查询 #经典类 广度查询 #python 2.0 #新式类 广度查询 #经典类 深度查询