php Python描述符
Python描述符 [代码片段(27行)]
class Descriptor:
def __init__(self, name, type, default=None):
self.name = "_" + name
self.type = type
self.default = default if default else type()
def __get__(self, instance, cls):
return getattr(instance, self.name, self.default)
def __set__(self, instance, value):
if not isinstance(value, self.type):
raise TypeError("Must be a %s" % self.type)
setattr(instance, self.name, value)
def __delete__(self, instance):
raise AttributeError("Can't delete attribute")
class Foo:
name = Descriptor("name", str)
num = Descriptor("num", int, 42)
f = Foo()
a = f.name
f.name = "Guido"
del f.name # Raise AttributeError
//该片段来自于http://outofmemory.cn
精彩图集
精彩文章






