1、元类的使用
import inspect
class B(type):
def __new__(mcs, name, bases, attrs):
"""
@:param msc 元类自身
@:param name 类名,不是元类的name
@:param bases 继承父类的元组集合,不是元类的父类
@:param attrs 类的属性字典集合
"""
for attr_name, attr_value in attrs.items():
if attr_name == 'say' and callable(attr_value):
# 通过inspect可以获取,类方法中的参数
print(inspect.signature(attr_value).parameters)
return super().__new__(mcs, name, bases, attrs)
class C:
pass
class A(C, metaclass=B):
def say(self, name):
print(name)
2、@property
class D:
def __init__(self, name):
self._name = name
@property
def g(self):
return self._name
# 必须以被property标记的方法开始
@g.setter
def g(self, v):
self._name = v
d = D('hell')
print(d.g)
d.g = 222
print(d.g)