python 使用元类type创建类
作者:Silent丿丶黑羽 发布时间:2021-06-27 21:11:48
标签:python,元类,type,创建类
前言:
通常我们创建类都是使用class
类名,但是小伙伴们有没有想过,类是由谁来创建的呢,python
中常说的万物皆对象,对象是由类创建的,那类本身也可以看做是对象,类可以由元类type
创建
1、type动态创建类
1.1 语法格式
type
(类名,由父类名称组成的元组(可以为空),包含属性的字典(名称和值))
1.2 案例1:使用type创建类
Person = type("Person", (), {})
p = Person()
print(type(p))
print(Person.__name__)
结果:
<class '__main__.Person'>
Person
注意:type("Person", (), {})中的Person可以写成其他任意字符串,但是打印类的名称时,就会变成你写其他字符串了
Person = type("Per", (), {})
p = Person()
print(Person.__name__)
结果:
Per
所以为了程序代码更加友好,一般变量名和设置的类名保持统一
1.3 案例2:使用type创建带有属性(方法)的类
def show(self):
print("展示自己")
Person = type("Person", (), {"age": 18, "name": "jkc", "show": show})
p = Person()
print(p.age)
print(p.name)
p.show()
结果:
18
jkc
展示自己
我们动态创建了一个父类为Object
,属性有age
、name
、方法为show
的类
1.4 案例3:使用type动态创建一个继承指定类的类
class Animal:
def __init__(self, color="blue"):
self.color = color
def eat(self):
print("吃东西")
Dog = type("Dog", (Animal, ), {})
dog = Dog()
dog.eat()
print(dog.color)
结果:
吃东西
blue
我们动态创建了一个继承Animal
类的Dog
类,可以使用Animal
类的所有方法和属性
来源:https://www.cnblogs.com/jiakecong/p/14717441.html
0
投稿
猜你喜欢
- 因时间问题不可能一次写的很多,但我们会经常更新,方便大家。希望学习编程的朋友不要因为从网站复制了代码,而不能正常的运行而放弃。其实老鸟也是经
- 一、reversereverse()是python中列表的一个内置方法(在字典、字符串和元组中没有这个内置方法),用于列表中数据的反转例子:
- 如下所示:#!/usr/bin/env python#coding: utf8import getpassdb = {}def newUse
- /************************* Sql Server 2000 如何删除数据库备份 *****************
- Python操作MySQL主要使用两种方式:原生模块 pymsqlORM框架 SQLAchemypymqlpymsql是Python中操作M
- 本文研究的主要是Python使用pickle模块存储数据报错解决方法,以代码的形式展示,具体如下。首先来了解下pickle模块pickle提
- 如何用ASP建立Index Server查询对象并为其参数赋值?我们有两个方法可以做到这一点。一个方法是利用Index Server que
- 一、什么是跨域?跨域问题的出现是因为浏览器的同源策略问题。所谓同源就是必须有以下三个相同点:协议相同、主机相同、端口相同。如果其中有一项不同
- 在python中常看到在定义函数是使用@func. 这就是装饰器, 装饰器是把一个函数作为参数的函数,常常用于扩展已有函数,即不改变当前函数
- 先来定义分页语句将要用到的几个参数:int currentPage ; //当前页int pageRecord ; //每页显示记录数以之前
- 导语小伙伴们大家好~如今的游戏可谓是层出不穷,NBA 2K系列啊,FIFA系列啊更是经典中的经典,不过小编发现,赛车游戏也是深受大家欢迎啊,
- 前言Typora是一款非常使用的笔记工具,对于程序员非常友好,在2021年11月23日,Typora 正式发布 1.0 版本,进入了付费时代
- 这篇文章主要介绍了python如何获取apk的packagename和activity,文中通过示例代码介绍的非常详细,对大家的学习或者工作
- 一、在Yii中实现乐观锁乐观锁(optimistic locking)表现出大胆、务实的态度。使用乐观锁的前提是, 实际应用当中,发生冲突的
- 很常见的一个图片轮播Flash,使用之后发现在IE下按F5刷新之后Flash区域就变成一大块背景色,内容轮播出不来了。有趣的是右键点击Fla
- Python基础语法相关一、Python中的pass语句的作用是什么?pass语句什么也不做,一般作为占位符 或者创建站位程序,pass语句
- Web网站可用性的关键指标是速度,更确切地说,是页面能以多快的速度出现在访问者的浏览器窗口里。影响速度的因素有很多种,包括Web服务器的速度
- 本文记录了mysql 8.0.22 安装配置图文教程,供大家参考,具体内容如下一、安装(1)、官网下载(2)、安装(前提是之前没安装过mys
- 包括安装时提示有挂起的操作、收缩数据库、压缩数据库、转移数据库给新用户以已存在用户权限、检查备份集、修复数据库等。 (一)挂起操作在安装S
- 本文实例讲述了Python疯狂填词程序实现方法。分享给大家供大家参考,具体如下:题目如下:创建一个疯狂填词程序,它将读入文件,并让用户在该文