python原类、类的创建过程与方法

简介: python是一门面向对象的语言,对于一切接对象的python来说,咱们有必要深入的学习与了解一些知识首先大家都知道,要获取一个对象所对应的类,需要使用__class__来进行检索。但如果我们只是一个简单的赋值语句,能这么使用么?让我们看下下面的代码:

获取对象的类名


python是一门面向对象的语言,对于一切接对象的python来说,咱们有必要深入的学习与了解一些知识


首先大家都知道,要获取一个对象所对应的类,需要使用__class__来进行检索。

但如果我们只是一个简单的赋值语句,能这么使用么?让我们看下下面的代码:

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这三个类名。


但如果我们继续把他们作为对象,那么所对应的类是谁呢?让我们打印下

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就是祖宗了么?还有没有祖宗的祖宗?你可以自己验证啊,按照上面的方法

print(type.__class__)
output: <class 'type'>

这下死心了啊,type这个祖宗上面没有祖宗了。哈哈....


为什么是type


type这个函数我们经常会用到,比如一个对象,我们想知道它是什么类型的,那么我们会使用type(xxx)

那么type它到底是什么?看源码喽...

class type(object):
    """
    type(object_or_name, bases, dict)
    type(object) -> the object's type
    type(name, bases, dict) -> a new type
    """
    ... ...
    ... ...


看到注释的时候我们明白了,type有两个用法


  1. 获取类型
  2. 创建新type


相信第一点,我们都经常用,否了解。

第二点是干嘛的?让我们留一个悬念,接着往下看


类的99.99%创建方法与100%过程


这个标题诱不诱惑?很多人会说不诱惑,而且比较傻,那么就往下看吧

所有人不管是java的还是Python的都明白,创建一个类么,class+类名 OK了

那么你知道你在class+类名,然后赋值或者定义实例方法的时候到底内存做了什么?

class MainClass:
    name='Uranus'


这个方法应该是比pass高档一分钱不到的脑残类了。可你知道在内存中它做了什么么?


  1. 首先他创建了一个变量,变量的名字叫MainClass
  2. 之后python开辟了一块内存空间,用于创建一个类,类名为ClassMain
  3. 将ClassMain这个变量指向ClassMain
  4. 在这个方法中创建一个dict的字典
  5. dict这个字典指向一个内存空间,存放着{name:Uranus}


和你们想的一样么?先不说一样不一样,估计很多人都要说我是瞎说的...没关系


介绍0.01%的类创建方法


刚才留了一个疑问,type的第二种用法,用来创建一个新的type

它是做什么的呢?让我先来演示一段代码

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的第二种方法你会了么?类的创建过程你明白了么?

相关文章
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
334 1
|
4月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
133 2
|
4月前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
122 0
|
4月前
|
传感器 大数据 API
Python数字限制在指定范围内:方法与实践
在Python编程中,限制数字范围是常见需求,如游戏属性控制、金融计算和数据过滤等场景。本文介绍了五种主流方法:基础条件判断、数学运算、装饰器模式、类封装及NumPy数组处理,分别适用于不同复杂度和性能要求的场景。每种方法均有示例代码和适用情况说明,帮助开发者根据实际需求选择最优方案。
201 0
|
4月前
|
Python
Python字符串center()方法详解 - 实现字符串居中对齐的完整指南
Python的`center()`方法用于将字符串居中,并通过指定宽度和填充字符美化输出格式,常用于文本对齐、标题及表格设计。
|
3月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
400 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
5月前
|
安全 Python
Python语言中常用的文件操作方法探讨
通过上述方法的结合使用,我们可以构筑出强大并且可靠的文件操作逻辑,切实解决日常编程中遇到的文件处理问题。
232 72
|
3月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。
|
4月前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
253 4
|
3月前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)

推荐镜像

更多