发布于2020-02-10 15:33 阅读(1106) 评论(0) 点赞(10) 收藏(5)
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
简介:所谓的类只是一个抽象的定义,而实例则是具体的对象。它们之间的差别就想我脑海中的石头和我手中的石头一样,只有后者才真实存在。类就是一个模板,每一个类创建好之后,就是一个模板。可以用这个模板生成一个个实例对象。
object
是 Python
为所有对象提供的 基类,提供有一些内置的属性和方法,可以使用 dir
函数查看。
新式类:以 object 为基类的类,推荐使用。
经典类:不以 object 为基类的类,不推荐使用。
在 Python 3.x 中定义类时,如果没有指定父类,默认使用 object 作为该类的基类 —— Python 3.x 中定义的类都是 新式类。
在 Python 2.x 中定义类时,如果没有指定父类,则不会以 object 作为该类的基类。
1 2 3 4 5 6 7 8 9 10 11 12 13 | # -*- coding:utf-8 -*- class NewClass( object ): # 可以不写object,默认就是object pass class OldClass: pass New = NewClass() # 创建一个新式类的实例 Old = OldClass() # 创建一个经典类的实例 print ( type (NewClass)) # python3结果:<class 'type'> python2结果:<type 'type'> print ( type (New)) # python3结果:<class '__main__.NewClass'> python2结果:<class '__main__.NewClass'> print ( type (OldClass)) # python3结果:<class 'type'> python2结果:<type 'classobj'> print ( type (Old)) # python3结果:<class '__main__.OldClass'> python2结果:<type 'instance'> |
在python2运行结果中,我们可以看见经典类输出很含糊,经典类属于类对象,无论是哪个类,都统一为“类”类型,实例属于实例类型,却不知道其是由哪个类创建的,所以的实例都统一为“实例”类型。
也就是说当时的类型用 classobj 和 instance 代表了所以的类和实例,无论你是哪个类,又或是哪个类创建的实例。这样的信息实在太少,而类和类型之间非常混乱。为了解决这种情况,在 python2.2 中引入了新式类,并进行了类和类型的同统一。
1 2 3 4 5 6 7 8 9 10 11 12 | # -*- coding:utf-8 -*- class NewClass( object ): def __init__( self , age): self .age = age # 创建方式1 obj1 = NewClass( 123 ) # 通过类名+(),来创建实例对象 print (obj1.age, id (obj1)) # 结果:123 140408922671424 # 创建方式2 obj2 = type (obj1)( 321 ) # 对实例来说type返回的是类对象,又可以用类对象来创建新的实例 print (obj2.age, id (obj2)) # 结果:321 140408922670360 |
总结的来说:在新式类中,所以的类对象都是 type 的实例。而不同的类对象又能创建出其对应的实例。
1 2 3 4 5 6 7 8 9 10 11 12 | class Person: def __init__( self , name, gender): self .__name = name # 私有实例变量(__name)前有2个下划线 self .gender = gender def getName( self ): return self .__name if __name__ = = "__main__" : person = Person( "张三" , 26 ) # print(person.__name) print (person.getName()) |
https://www.liaoxuefeng.com/wiki/1016959663602400/1017496031185408
作者:雪儿
链接:https://www.pythonheidong.com/blog/article/230728/b78717cab6d70fac6e97/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!