Python之元类
Posted zhzhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之元类相关的知识,希望对你有一定的参考价值。
如果希望创建某一批类全部具有某种特征,则可通过metaclass来实现。使用metaclass可以在创建类时动态修改类定义。
class ItemMetaClass(type): # cls 代表被动态修改的类 # name 代表被动态修改的类名 # bases 代表被动态修改的类的所有父类 # attr 代表被动态修改的类的所有属性、方法组成的字典 def __new__(cls, name, bases, attrs): attrs[‘cal_price‘] = lambda self: self.price * self.discount return type.__new__(cls, name, bases, attrs) class Book(metaclass=ItemMetaClass): __slots__ = [‘name‘, ‘price‘, ‘_discount‘] def __init__(self, name, price): self.name = name self.price = price @property def discount(self): return self._discount @discount.setter def discount(self, discount): self._discount = discount class CellPhone(metaclass=ItemMetaClass): __slots__ = [‘price‘, ‘_discount‘] def __init__(self, price): self.price = price @property def discount(self): return self._discount @discount.setter def discount(self, discount): self._discount = discount b = Book(‘九年级数学上‘, 89) b.discount = 0.76 print(b.cal_price()) cp = CellPhone(2399) cp.discount = 0.85 print(cp.cal_price())
谢谢!
以上是关于Python之元类的主要内容,如果未能解决你的问题,请参考以下文章