python类的编写模板_python中的泛型/模板?

在对用python生成泛型类型提出了一些好的想法之后,我开始寻找其他有相同想法的人,但是我找不到任何人。所以,就在这里。我试过了,效果很好。它允许我们在python中参数化类型。class List( type ):

def __new__(type_ref, member_type):

class List(list):

def append(self, member):

if not isinstance(member, member_type):

raise TypeError('Attempted to append a "{0}" to a "{1}" which only takes a "{2}"'.format(

type(member).__name__,

type(self).__name__,

member_type.__name__

))

list.append(self, member)

return List

现在可以从此泛型类型派生类型。class TestMember:

pass

class TestList(List(TestMember)):

def __init__(self):

super().__init__()

test_list = TestList()

test_list.append(TestMember())

test_list.append('test') # This line will raise an exception

这个解决方案很简单,但也有它的局限性。每次创建泛型类型时,它都将创建一个新类型。因此,作为父类继承List( str )的多个类将从两个单独的类继承。为了克服这个问题,您需要创建一个dict来存储内部类的各种形式,并返回先前创建的内部类,而不是创建一个新的内部类。这将防止创建具有相同参数的重复类型。如果感兴趣,可以使用decorators和/或元类来制定更优雅的解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值