Python 有一个 property 的属性,非常好用。但它只针对对象,无法获取类的属性。我们可以利用 Python 的描述器来编写一个 classproperty
来获取类的属性。
不过这个属性是只读的,只能用来读取,不能写入数据。
代码示例
class classproperty:
def __init__(self,method):
self.method=method
def __get__(self,instance,owner):
return self.method(owner)
class Billow:
@classproperty
def lname(cls):
return cls.__name__.lower()
print(Billow.lname)
在上面的例子中,我们为 Billow
类添加了一个 lname
的属性,可以将其类名转化为小写。例如本例打印出来的值为 billow 。
作用
我们在写数据库模型的时候,可以使用设置这样的属性,可以用来获取数据库的连接、对应的表名等内容。