python-获取类名和方法名,动态创建类和方法及属性

摘要:
获取类名和方法名1.获取函数外部的函数名__name__Get 2.获取函数内部当前函数的名称,并使用sys_getframe()。f_代码。co.获取名称方法3.使用inspect模块动态获取当前运行函数的名称。返回检查。stack()[1][3]需要封装方法并在测试4的函数中调用它们。在class__ class__中获取类名self。__名称__进口检验
获取类名和方法名
1.在函数外部获取函数名称,用.__name__获取
2.在函数内部获取当前函数名称,用sys._getframe().f_code.co_name方法获取
3.使用inspect模块动态获取当前运行的函数名,return inspect.stack()[1][3]需要封装个方法在被测函数中调用
4.在类内部获取类名称self.__class__.__name__
import inspect,sys
def get__function_name():
    #获取正在运行函数(或方法)名称
    return inspect.stack()[1][3]
def shuzf():
    print(sys._getframe().f_code.co_name)
    print(get__function_name())

动态创建类和方法及属性
1.使用type创建类
def __init__(self,name,age):
    self.name = name
    self.age = age
Dog_class = type("Dog",(object,),{"role":"dog","__init__":__init__})   #动态添加属性与方法

d = Dog_class('shuzf',22)
print(type(Dog_class))   
print(type(d))
print(d.role,d.name,d.age)

out:
<class 'type'>
<class '__main__.Dog'>
dog shuzf 22

2.使用setattr() 动态创建方法、属性
class A():
    name = 'python'
    @classmethod
    def funcmethod(cls):
        return 'Hello world:funcmethod'

setattr(A, 'age',30)  #创建变量并赋值,可在下次直接使用
setattr(A,'funcmethod_class',A.funcmethod) #创建变量并赋值方法

 

获取函数信息

import inspect
#函数信息
def test1():
    pass
print("函数信息:",inspect.getfullargspec(test1))

#函数的入参出参信息
def test2(a:"描述",b:object,c:int=None,d:str='http') -> str:
    print("函数的入参出参信息:",test2.__annotations__)
test2(a=1,b='2')

 

免责声明:文章转载自《python-获取类名和方法名,动态创建类和方法及属性》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java中设置Session过期时间(Spring Boot)SwitchButton 开关按钮 的多种实现方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python强大的可变参数传递机制

今天模拟定义map函数.写着写着就发现Python可变长度参数的机制真是灵活而强大. 假设有一个元组t,包含n个成员: t=(arg1,...,argn) 而一个函数f恰好能接受n个参数: f(arg1,...,argn) f(t)这种做法显然是错的,那么如何把t的各成员作为独立的参数传给f,以便达到f(arg1,...,argn)的效果? 我一开始想到的...

对象建模

面向对象建模 建模:为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。 建模的目的:减少复杂性。 面向对象方法最基本的原则:按照人们习惯的思维方式,用面向对象观点建立问题域的模型,开发出尽可能自然地表现求解方法的软件。 用面向对象方法开发软件,通常需要建立3种形式的建模,它们分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和...

Python并发编程 —— 在Python程序中的进程操作

运行中的程序就是一个进程。所有的进程都是通过它的父进程来创建的。因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程。多个进程可以实现并发效果,也就是说,当我们的程序中存在多个进程的时候,在某些时候,就会让程序的执行速度变快。我们可以借助python中强大的模块。来实现创建进程这个功能。 1、multiprocessing模块 把...

Python——PYQT:控件基本使用

QtGui.QComboBox控件常用函数: .addItem(string) #添加字符串项到Item .addItems(list) #添加列表或元组元素到Item .clear() #清除所有Item .clearEditText() #清除编辑框内容 .count() #返回Item数目 .currentIndex...

Python模块学习filecmp文件比较

Python模块学习filecmp文件比较 filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单。python标准库还提供了difflib模块用于比较文件的内容。关于difflib模块,且听下回分解 filecmp定义了两个函数,用于方便地比较文件与文件夹:  filecmp.cmp(f1, f2[, shallow]...

Werkzeug教程

http://chaoxz2005.blog.163.com/blog/static/15036542012863405266/ http://www.dajo.com.cn/a/boke/python/2013/1125/146.html 这里我们将会创建一个仿制TinyURL的应用,将URLs存储到一个redis实例。为了这个应用,我们将会使用的库包括...