我有一个冗长的、重复的代码,里面充满了类,每个类都做着几乎相同的事情,我试图做这样的事情来缩短它:
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
是我前面定义的两个函数。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐