元类
class Person:
pass
p = Person()
n = 10
s = "abc"
print(p.__class__, n.__class__, s.__class__) # 输出为:<class '__main__.Person'> <class 'int'> <class 'str'>
print(int.__class__, str.__class__, Person.__class__) # 输出为:<class 'type'> <class 'type'> <class 'type'>
type是元类,所有类是由元类实例化出的。
类的创建方式
方式1
class Person:
num = 10
def abc(self):
pass
方式2
type(name:str, Tuple[type, ...], dict:Dict[str, Any])
第一个参数为所创建类的名称。第二个参数为所继承的类,可不填。第三个参数为存放类属性、方法的字典。
Animal = type("Animal", (), {"name": "abc", "age":8})
d = type("Dog", (Animal, ), {"name": "abc", "age":5}) # 继承了类Animal
# 可以查询类属性
print(Animal.name) # 输出为:abc
print(d.age) # 输出为:5