我有一个冗长的,重复的代码,里面装满了几乎同样的东西,我试图做这样的事情来缩短它:
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__()))
...
baseconv
和intconv
是我之前定义的两个函数。