类和对象

类和对象

对象是特征(属性)与技能(函数)的结合体,类是一系列对象共有特征与技能的结合体。

如何定义类

class 类名():
类名要遵循驼峰体命名法。

定义类发生的事情

  • 产生名称空间
  • 把类内部所有名字,放到名称空间中
    注: 类在定义阶段,会执行类内部的代码

类的属性获取和使用

增(Class.new_attr = ),删 (del Class.attr),改(Class.attr = ),查(Class.attr)

  • 数据属性
    Class.attr 直接获取
  • 函数属性
    Class.func(obj) # 使用时要传入对象

对象

如何产生对象:
用类名+(), 调用类产生对象

__init__ 方法,会在调用类时自动触发该函数, 会把对象本身以及括号内的参数一并传给__init__方法

调用类的过程又叫类的实例化,产生的对象是类的一个实例

对象属性的查找顺序

  1. 优先查找对象自己的属性
  2. 没有去类里面找,类若没有,则去类的父类里向上查找,直至找到,最后还是没有找到则报错

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)
posted @ 2019-10-09 17:53  YajunRan  阅读(147)  评论(0编辑  收藏  举报