09 Python两种创建类的方式
第一种比较普遍的方式:
class Work():
def __init__(self,name):
self.name = name w = Work('well woker')
这样就简单创建了一个类,分别打印w的类型和Work的类型
print(type(w)) #<class '__main__.Work'>
print(type(Work)) #<class 'type'>
这就说明type也是一个类,并且是类的类,称为元类,元类就是创建类的类 。
第二种创建类的方式:
用type动态创建类,type有一个方法:type(类名,父类名,方法名(字典形式))用来动态创建类
三个参数的具体内容:
1. 第一个参数: 要创建的class的名称
2. 第二个参数: 继承的父类集合,Python支持多重继承,如果只有一个父类,写(obj,);
3. 第三个参数: class的方法名字典,字典内容为'类里面方法名称' : '写好的函数名称' 创建之后使用类方法名称调用
例子:
def func(self): #第一个方法
print('hello %s' % self.name) def __init__(self,name,age): #初始化方法
self.name = name
self.age = age #type('叫什么类','继承谁','里面有什么方法') Foo = type('Foo',(object,),{'eat':func,
'__init__':__init__
}) f = Foo('周润发','')
f.talk()
print(type(Foo))
上面的例子就等同于第一种普通创建类的方式,这里就不赘述了。
09 Python两种创建类的方式的更多相关文章
- 32 ArcToolBox学习系列之数据管理工具箱——属性域(Domains)的两种创建及使用方式
属性域分为两类,一种是范围域,一种是编码的值,下面将两个一起介绍,其中涉及到的编码,名称,只是试验,并非真实情况. 一.首先新建一个文件型地理数据库,将数据导入或者是新建要素类都可以 二.打开ArcT ...
- 黑马程序员——JAVA基础之简述多线程,两种创建多线程的方式
------- android培训.java培训.期待与您交流! ---------- 多线程: 进程和线程: 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者 ...
- 从生成文件对比两种创建虚拟机的方式:boot from image和boot from bootable-volume
1. 创建bootable-volume(参考:http://docs.openstack.org/grizzly/openstack-compute/admin/content/instance-c ...
- 【转载】 Java中String类型的两种创建方式
本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...
- String变量的两种创建方式
在java中,有两种创建String类型变量的方式: String str01="abc";//第一种方式 String str02=new String("abc&qu ...
- OC中两种单例实现方式
OC中两种单例实现方式 写在前面 前两天探索了一下C++ 的单例,领悟深刻了许多.今天来看看OC中的单例又是怎么回事.查看相关资料,发现在OC中一般有两种实现单例的方式,一种方式是跟C++ 中类似的常 ...
- Java中有两种实现多线程的方式以及两种方式之间的区别
看到一个面试题.问两种实现多线程的方法.没事去网上找了找答案. 网上流传很广的是一个网上售票系统讲解.转发过来.已经不知道原文到底是出自哪里了. Java中有两种实现多线程的方式.一是直接继承Thre ...
- JS面向对象编程创建类的方式
js创建类的方式有几种,大致如下: 1,构造函数方式: function Car(parameters) { this.name = "objectboy"; } var cat1 ...
- Spring两种实现AOP的方式
有两种实现AOP的方式:xml配置文件的方式和注解的形式 我们知道通知Advice是指对拦截到的方法做什么事,可以细分为 前置通知:方法执行之前执行的行为. 后置通知:方法执行之后执行的行为. 异常通 ...
随机推荐
- 如何使用Navicat监控mysql数据库服务器
https://jingyan.baidu.com/article/c33e3f48de5208ea15cbb525.html 打开Navicat 点击[工具]菜单,选择[服务器监控]下的[MyS ...
- WebSocket-java实现
一.所需jar 二.创建websocket.jsp(注意此页面链接,需要链接到自己的服务) <%@ page language="java" import="jav ...
- spring boot知识清单
https://mp.weixin.qq.com/s/q8OI2Ou8-gYP-usjToBbkQ
- a标签的伪类
a 超链接 伪类:给元素添加特殊的效果 :link 未访问过的链接初始颜色 :visited 访问过后的链接颜色 :hover 鼠标移入(悬停)时的颜色 :active 鼠标按下时链接的颜色 书写时的 ...
- GitHub:Microsoft
ylbtech-GitHub:Microsoft 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 1. https://github.com/microsoft ...
- .NET GC简单理解
内存分配 计算对象大小. 添加对象指针和同步索引块. 从内存指针处开始,分配对象内存. 问题:内存不能无限制增长. 垃圾回收 从应用程序实例出发,标记所有的引用对象. 将标记对象移动到低地址端,修正实 ...
- 七十一:flask钩子函数之关于context_processor的钩子函数
context_processor:使用这个钩子函数,必须返回一个字典,这个字典的值在所有模板中都可以使用,这个钩子函数作用是,如果一些在很多模板中都要用到的变量,那么就可以使用此钩子函数来返回,而不 ...
- Linux Openssh源码升级
telnet服务 yum install -y telnet-server xinetd systemctl start xinetd systemctl start telnet.socket #监 ...
- php下关于字符串与数组的相互转换的函数
public static function string2array($tags) { return preg_split('/\s*,\s*/',trim($tags),-1, ...
- ios8唤不起APP的问题
https://stackoverflow.com/questions/27526966/ios-8-window-location-href-doesnt-work-with-url-scheme ...