类和对象
类和对象
对象是特征(属性)与技能(函数)的结合体,类是一系列对象共有特征与技能的结合体。
如何定义类
class 类名():
类名要遵循驼峰体命名法。
定义类发生的事情
- 产生名称空间
- 把类内部所有名字,放到名称空间中
注: 类在定义阶段,会执行类内部的代码
类的属性获取和使用
增(Class.new_attr = ),删 (del Class.attr),改(Class.attr = ),查(Class.attr)
- 数据属性
Class.attr 直接获取 - 函数属性
Class.func(obj) # 使用时要传入对象
对象
如何产生对象:
用类名+(), 调用类产生对象
__init__
方法,会在调用类时自动触发该函数, 会把对象本身以及括号内的参数一并传给__init__
方法
调用类的过程又叫类的实例化,产生的对象是类的一个实例
对象属性的查找顺序
- 优先查找对象自己的属性
- 没有去类里面找,类若没有,则去类的父类里向上查找,直至找到,最后还是没有找到则报错
MetaClass
元类是实例化可以产生类的类。
元类的作用:控制类的产生过程
如何使用元类,继承type定义元类。产生对象时,指定metaclass等于元类
class MyMeta(type):
def __init__(self, class_name, base_class, class_dic):
print("Meta init")
self.common = 1123
type.__init__(self, class_name, base_class, class_dic)
Z = MyMeta("Z", (object,), dict(a=1))
# the above line like
# Class Z(metaclass=MyMeta):
# a = 1
print(Z.a)
print(Z.common)