如何使用exec()在函数内定义类

时间:2016-03-25 23:34:56

标签: python

我有一个冗长的,重复的代码,里面装满了几乎同样的东西,我试图做这样的事情来缩短它:

def newClass(cName, para):
    string = '''class '''+cName+'''(str):
    def __new__(cls, num): 
        return(str.__new__(cls, func('''+para+''')))'''
    exec(string)

但是新类既不是newClass的一部分,也不是自己定义的,我怎样才能创建新类,好像它没有在函数中定义一样?如果那是不可能的,我怎么能做到这样我可以这样做:

newClass('Fun', 'p')
newClass.Fun('inp')

编辑:我正在制作基本转换程序,并希望能够执行python不像bin(a) + bin(b)那样做的事情。这是我的一个类的简化版本:

class Bin(str):
    '''Binary (base 2) number'''
    def __new__(cls, num): 
        return(str.__new__(cls, baseconv(num, 2, '01')))
    def __int__(self): 
        return(intconv(self, 2, '01'))
    def __add__(a, b): 
        return(Bin(a.__int__() + b.__int__()))
    def __sub__(a, b): 
        return(Bin(a.__int__() - b.__int__()))
    ...

class Ter(str):
    '''Ternary (base 3) number'''
    def __new__(cls, num): 
        return(str.__new__(cls, baseconv(num, 3, '012')))
    def __int__(self): 
        return(intconv(self, 3, '012'))
    def __add__(a, b): 
        return(Ter(a.__int__() + b.__int__()))
    def __sub__(a, b): 
        return(Ter(a.__int__() - b.__int__()))
    ...

baseconvintconv是我之前定义的两个函数。

0 个答案:

没有答案