python 元类编程_python定义元组

python 元类编程_python定义元组前言通常我们创建类都是使用class类名,但是小伙伴们有没有想过,类是由谁来创建的呢,python中常说的万物皆对象,对象是由类创建的,那类本身也可以看做是对象,类可以由元类type创建type

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

通常我们创建类都是使用class 类名,但是小伙伴们有没有想过,类是由谁来创建的呢,python中常说的万物皆对象,对象是由类创建的,那类本身也可以看做是对象,类可以由元类type创建
 

type动态创建类

 

语法格式

type(类名,由父类名称组成的元组(可以为空),包含属性的字典(名称和值))
 

案例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

所以为了程序代码更加友好,一般变量名和设置的类名保持统一
 

案例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的类
 

案例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://javaforall.net/165478.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月30日 下午12:00
下一篇 2022年7月30日 下午12:00


相关推荐

  • 微信小程序后端开发流程_微信小程序开发入门

    微信小程序后端开发流程_微信小程序开发入门微信小程序开发流程记录一、代码处理(一)微信小程序(前端显示)微信小程序项目的架构部分特点说明(二)后台服务器(数据交互)需要的环境特别注意二、项目部署(一)Wampserver的设置(二)域名的获取(三)小程序官方网站上的设置一、代码处理最近一大学同窗开了家自习室,需要一个自习室的预约微信小程序,又恰好手上没有什么代码项目在写,本着少一事不如多一事的原则,尝试了第一次的微信小程序开发。白天要上班,只能利用晚上时间编写,反正他也不着急开业,于是前前后后用了大概半个月的时间,故做记录。刚开始写,确实没什

    2025年11月19日
    9
  • 数据分析,主成分分析例题

    数据分析,主成分分析例题已知协方差矩阵求X的各主成分以及主成分的贡献率主成分分析原理:找出几个综合变量来代替原来众多的变量,使这些综合变量能尽可能地代表原来变量的信息量,且彼此之间互不相关统计方法:主成分分析(主分量分析)主成分分析步骤1.根据已知协方差矩阵,求出相应的特征值(特征根)令|kE-A|=0(其中k是特征值),求出的k就是所需要的特征值2.求出对应特征值的特征向量解方程|kE-A|X=0,求X的所有情况(参考高等代数的第三章解线性方程组)求出基本解系,设定自由未知量的值(X是向量)3.对所求出来

    2025年7月12日
    7
  • netty原理分析

    netty原理分析1 Netty 简介 Netty 是一个高性能 异步事件驱动的 NIO 框架 基于 JAVANIO 提供的 API 实现 它提供了对 TCP UDP 和文件传输的支持 作为一个异步 NIO 框架 Netty 的所有 IO 操作都是异步非阻塞的 通过 Future Listener 机制 用户可以方便的主动获取或者通过通知机制获得 IO 操作结果 作为当前最流行的 NIO 框架 Netty 在互联网领

    2026年3月19日
    4
  • order by case when执行优先级_sql case语句

    order by case when执行优先级_sql case语句MySQL语句中执行优先级——and比or高例:select*fromtablewhere条件1AND条件2OR条件3等价于select*fromtablewhere(条件1AND条件2)OR条件3select*fromtablewhere条件1AND条件2OR条件3AND条件4等价于select*fromtablewhere(条件1AND条件2)OR(条件3AND条件4)sql执行顺序

    2025年8月26日
    6
  • 挖矿脚本真的凶残!!

    挖矿脚本真的凶残!!事因:阿里突然发短信说我的阿里云服务器上面有挖矿程序!!!!!,顿时一惊,所以登陆到服务器。1.我用了top命令查看系统目前系统性能结果发现有个叫-bash的进程占用了99%的资源2.接下来我用kill-921252然后等一会又发现了这个脚本继续在占用资源,然后百度了下说这个挖矿可能有定时任务3.然后就采用了crontab-l查看定时任务列表果然有个定时任…

    2022年7月13日
    21
  • 六大AI模型性能深度评测:DeepSeek、ChatGPT等实力排名解析

    六大AI模型性能深度评测:DeepSeek、ChatGPT等实力排名解析

    2026年3月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号