python原类、类的创建过程与方法
今天为大家介绍一下python中与class 相关的知识……
获取对象的类名
python是一门面向对象的语言,对于一切接对象的python来说,咱们有必要深入的学习与了解一些知识
首先大家都知道,要获取一个对象所对应的类,需要使用class来进行检索。
但如果我们只是一个简单的赋值语句,能这么使用么?让我们看下下面的代码:
[code]num=10 string='abc' class MainClass: pass p=MainClass() print(num.__class__) # output: <class 'int'> print(string.__class__) # output: <class 'str'> print(p.__class__) # output: <class '__main__.MainClass'>
通过上面的代码我们看到了,不论我们是简单的赋值操作,还是我们自己去定义一个类,并且通过这个类生成了一个对象。我们都可以使用
__class__来查询对象所对应的方法。此处应该大多数人都是了解的。继续往下走
将我们眼中的类作为对象
刚才我们通过
__class的方式获取了str、int、还有我们自定义的MainClass这三个类名。
但如果我们继续把他们作为对象,那么所对应的类是谁呢?让我们打印下
[code]print(int.__class__) # 或者这么写:print(num.__class__.__class__) # output: <class 'type'> print(str.__class__) # output: <class 'type'> print(MainClass.__class__) # output: <class 'type'>
class 'type'
这是一个什么鬼?
它叫原类,是创造其他类的类…
有人要问了,type就是祖宗了么?还有没有祖宗的祖宗?你可以自己验证啊,按照上面的方法
[code]print(type.__class__) output: <class 'type'>
这下死心了啊,type这个祖宗上面没有祖宗了。哈哈….
为什么是type
type这个函数我们经常会用到,比如一个对象,我们想知道它是什么类型的,那么我们会使用type(xxx)
那么type它到底是什么?看源码喽…
[code]class type(object): """ type(object_or_name, bases, dict) type(object) -> the object's type type(name, bases, dict) -> a new type """ ... ... ... ...
看到注释的时候我们明白了,type有两个用法
-
获取类型
-
创建新type
相信第一点,我们都经常用,否了解。
第二点是干嘛的?让我们留一个悬念,接着往下看
类的99.99%创建方法
所有人不管是java的还是Python的都明白,创建一个类么,class+类名 OK了
那么你知道你在class+类名,然后赋值或者定义实例方法的时候到底内存做了什么?
[code]class MainClass: name='Uranus'
这个方法应该是比pass高档一分钱不到的脑残类了。可你知道在内存中它做了什么么?
-
首先他创建了一个变量,变量的名字叫MainClass
-
之后python开辟了一块内存空间,用于创建一个类,类名为ClassMain
-
将ClassMain这个变量指向ClassMain
-
在这个方法中创建一个dict的字典
-
dict这个字典指向一个内存空间,存放着{name:Uranus}
和你们想的一样么?先不说一样不一样,估计很多人都要说我是瞎说的…没关系
介绍0.01%的类创建方法
刚才留了一个疑问,type的第二种用法,用来创建一个新的type
它是做什么的呢?让我先来演示一段代码
[code]def func(): return 'is a function...' # 重点在这里 TypeClass=type('MainClass1',(),{'name':'Uranus','func':func}) print(TypeClass.__class__) # output: <class 'type'> print(TypeClass) # output: <class '__main__.MainClass1'> print(TypeClass.__dict__) # output: {'__module__': '__main__', '__weakref__': <attribute '__weakref__' of 'MainClass1' objects>, '__dict__': <attribute '__dict__' of 'MainClass1' objects>, '__doc__': None, 'func': <function func at 0x00000000024DDEA0>, 'name': 'Uranus'} print(TypeClass.name) # output: Uranus print(TypeClass.func()) # output: is a function...
好了,现在告诉我,TypeClass是什么,是不是一个类?
我在type中做了什么,是不是创建类名,忽略父类,创建类属性,创建类的实例方法?
传统的class创建,知识将TypeClass这个变量名设置的和你的类名MainClass1一样而已
type的第二种方法你会了么?类的创建过程你明白了么?之前你会么?双击666吧!
The End
OK,今天的内容就到这里,如果觉得内容对你有所帮助,可以点击文章右下角的“在看”。
欢迎将这篇文章或我的微信公众号【清风Python】分享给更多喜欢python的人,谢谢。
作者:清风Python
- python原类、类的创建过程与方法详解
- 带参数的存储过程动态创建一个视图及调用方法[表不固定,作为参数]
- SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)
- python创建和删除目录的方法
- 在C#中创建sql的存储过程方法之一
- cocos2d-x 使用 python脚本 创建项目的简单方法
- SQLite3创建数据库的方法 和 SQLite从Excel文件中导入数据 及 python/qpython sqlite 中文 乱码
- Android开发过程中创建一个Message对象使用方法区别
- C#调用存储过程的方法,和简单存储过程创建的方法实例。【转载】为入门的朋友引路,大家互相学习。
- file()创建文件方法 分类: python python基础学习 2012-12-24 18:17 239人阅读 评论(0) 收藏
- cocos2d-x使用python脚本创建项目的简单方法
- 系统维护 Win7安装过程中创建扩展分区和逻辑分区的方法
- python创建关联数组(字典)的方法
- python在windows下创建隐藏窗口子进程的方法
- python获得文件创建时间和修改时间的方法
- Python简单调用MySQL存储过程并获得返回值的方法
- 检查SQLSERVER有无创建表或存储过程的方法
- 企业库中 DatabaseFactory.CreateDatabase 方法创建数据库实例的 逻辑过程
- python创建只读属性对象的方法(ReadOnlyObject)
- cocos2d-x使用python脚本创建项目的简单方法