python class用法_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 typetype(name, bases, dict) -> a new type"""... ...... ...

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

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

相信第一点,我们都经常用,否了解。
第二点是干嘛的?让我们留一个悬念,接着往下看

类的99.99%创建方法

所有人不管是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: Uranusprint(TypeClass.func())
# output: is a function...

好了,现在告诉我,TypeClass是什么,是不是一个类?
我在type中做了什么,是不是创建类名,忽略父类,创建类属性,创建类的实例方法?
传统的class创建,知识将TypeClass这个变量名设置的和你的类名MainClass1一样而已
type的第二种方法你会了么?类的创建过程你明白了么?之前你会么?双击666吧!

The End

OK,今天的内容就到这里,如果觉得内容对你有所帮助,可以点击文章右下角的“在看”。
欢迎将这篇文章或我的微信公众号【清风Python】分享给更多喜欢python的人,谢谢。

更多精彩内容,请滑至顶部点击右上角关注小宅哦~

v2-bc7bccf0c30165aa177c0ae6cae29137_b.jpg

作者:清风Python

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网易公开课

计算机科学及编程导论 http://v.163.com/special/opencourse/bianchengdaolun.html 抽象编程 http://v.163.com/special/opencourse/abstractions.html转载于:https://www.cnblogs.com/anyboo/archive/2012/08/24/2653537.html

深度学习中的一些常见的激活函数集合(含公式与导数的推导)sigmoid, relu, leaky relu, elu, numpy实现

文章目录Sigmoid(x)双曲正切线性整流函数 rectified linear unit &#xff08;ReLu&#xff09;PReLU(Parametric Rectified Linear Unit) Leaky ReLu指数线性单元 Exponential Linear Units &#xff08;ELU&#xff09;感知机激活%matplotlib inline %config InlineBackend.f…

最牛X的GCC 内联汇编

正如大家知道的&#xff0c;在C语言中插入汇编语言&#xff0c;其是Linux中使用的基本汇编程序语法。本文将讲解 GCC 提供的内联汇编特性的用途和用法。对于阅读这篇文章&#xff0c;这里只有两个前提要求&#xff0c;很明显&#xff0c;就是 x86 汇编语言和 C 语言的基本认识。…

mysql的告警日志_MySQL Aborted connection告警日志的分析

前言&#xff1a;有时候&#xff0c;连接MySQL的会话经常会异常退出&#xff0c;错误日志里会看到"Got an error reading communication packets"类型的告警。本篇文章我们一起来讨论下该错误可能的原因以及如何来规避。1.状态变量Aborted_clients和Aborted_connects…

hosts多个ip对应一个主机名_一个简单的Web应用程序,用作连接到ssh服务器的ssh客户端...

WebSSH一个简单的Web应用程序&#xff0c;用作连接到ssh服务器的ssh客户端。它是用Python编写的&#xff0c;基于tornado&#xff0c;paramiko和xterm.js。特征支持SSH密码验证&#xff0c;包括空密码。支持SSH公钥认证&#xff0c;包括DSA RSA ECDSA Ed25519密钥。支持加密密钥…

Yii框架中使用PHPExcel导出Excel文件

Yii框架中使用PHPExcel导出Excel文件http://www.cnblogs.com/wgx214/p/3709521.html转载于:https://www.cnblogs.com/flying-tx/p/3714530.html

Shell Notes(1)

> vi复制粘贴 光标移动到要复制的部分的开头&#xff0c;Esc退出插入模式&#xff0c;按v进入Visual模式&#xff0c;用hjkl选中要复制的部分 按Y或者yy&#xff0c;复制 移动光标到目标位置&#xff0c;按p&#xff0c;粘贴 > echo –e 参数 –e 可以使echo解释由反斜杠…

mysql多表查询语句_mysql查询语句 和 多表关联查询 以及 子查询

1.查询一张表&#xff1a;select * from 表名&#xff1b;2.查询指定字段&#xff1a;select 字段1&#xff0c;字段2&#xff0c;字段3….from 表名&#xff1b;3.where条件查询&#xff1a;select字段1&#xff0c;字段2&#xff0c;字段3 frome表名 where 条件表达式&#x…

Pytorch 自定义激活函数前向与反向传播 sigmoid

文章目录Sigmoid公式求导过程优点&#xff1a;缺点&#xff1a;自定义Sigmoid与Torch定义的比较可视化import matplotlib import matplotlib.pyplot as plt import numpy as np import torch import torch.nn as nn import torch.nn.functional as F%matplotlib inlineplt.rcPa…

SVN错误:Attempted to lock an already-locked dir

出现这个问题后使用“清理”功能&#xff0c;如果还不行&#xff0c;就直接到上一级目录&#xff0c;再执行“清理”&#xff0c;然后再“更新”。有时候如果看到某个包里面的文件夹没有SVN的标志&#xff0c;直接用“CtrlDelete”手工删除&#xff0c;然后“清理”&#xff0c…

js高级编程_这位设计师用Processing把创意编程玩到了极致!

Processing作为新媒体从业者的必备工具&#xff0c;近来却越来越成为设计师们的新宠&#xff01;今天小编将介绍以为用Processing把创意编程玩到极致的设计师Tim Rodenbrker。“我们的世界正在以惊人的速度变化。新技术为创作带来了根本性的转变。编程是我们这个时代最宝贵的技…

微软.NET Framework 4.5.2 RTM正式版

今天&#xff0c;微软.NET开发团队发布.NET Framework 4.5.2 RTM正式版。新版框架继续高度兼容现有的.NET Framework 4、4.5、4.5.1等版本&#xff0c;该版本框架与旧版的.NET Framework 3.5 SP1和早期版本采取不同的处理方式&#xff0c;但与.NET Framework 4、4.5相比&#x…

HDU 1042 N!(高精度计算阶乘)

N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34687 Accepted Submission(s): 9711 Problem DescriptionGiven an integer N(0 ≤ N ≤ 10000), your task is to calculate N!InputOne N in one line, pr…

使用WebDriver遇到的那些坑

http://blog.csdn.net/oWuFeng1/article/category/2722111 在做web项目的自动化端到端测试时主要使用的是Selenium WebDriver来驱动浏览器。Selenium WebDriver的优点是支持的语言多&#xff0c;支持的浏览器多。主流的浏览器Chrome、Firefox、IE等都支持&#xff0c;手机上的浏…

python的闭包要素_Python的闭包

我的理解&#xff0c;Python中的闭包和其他语言中的闭包一样&#xff0c;都是在一个函数中返回另一个函数。def out_fun(num): print(------1-----) def in_fun(in_num): print(---------2--------) print(in_num%d % in_num) return num in_num print(-------3--------) retu…

Pytorch 自定义激活函数前向与反向传播 Tanh

看完这篇&#xff0c;你基本上可以自定义前向与反向传播&#xff0c;可以自己定义自己的算子 文章目录Tanh公式求导过程优点&#xff1a;缺点&#xff1a;自定义Tanh与Torch定义的比较可视化import matplotlib import matplotlib.pyplot as plt import numpy as np import torc…

multi mysql_mysqld_multi 的使用方法

mysqld_multi 的使用方法:官方文档&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/mysqld-multi.html 【文档有些问题&#xff0c;按照它的这个配置&#xff0c;mysqld_multi无法关闭实例】mysqld_multi无法关闭实例的解决方法&#xff1a;https://bugs.mysql.com/bug…

vsftp 无法启动,500 OOPS: bad bool value in config file for: anonymous_enable

朋友的FTP启动不了&#xff0c;叫我帮他看&#xff0c;启动时出现以下错误信息&#xff1a; 500 OOPS: bad bool value in config file for: anonymous_enable 看似配置文件错误&#xff0c;看了一下配置相应的行&#xff1a; anonymous_enableNO 语句没什么错误&#xff0c;不…

HDU ACM 1181 变形课 (广搜BFS + 动态数组vector)-------第一次使用动态数组vector

http://acm.hdu.edu.cn/showproblem.php?pid1181 题意&#xff1a;给我若干个单词,若单词A的结尾与单词B的开头相同,则表示A能变成B,判断能不能从b开头变成m结尾. 如: big-got-them 第一次使用动态数组vector View Code 1 #include <iostream>2 #include <vector>…

Max Sum 杭电 1003

2019独角兽企业重金招聘Python工程师标准>>> #题目概述 题目的意思是给你一个数列&#xff0c;找到一个子数列&#xff0c;这个子数列的和是所有子数列中和最大的。 当然把数列的所有数都列出来肯定不现实。 黑黑&#xff0c;不知道正不正确&#xff0c;我是先从第一…