• 类和对象


    类和对象

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

    如何定义类

    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)
    
  • 相关阅读:
    JDBI
    Concise: Compressed ’n’ Composable Integer Set
    java 7 新特性
    BIO的简单Demo
    手写一个死锁Demo
    实现一个Cglib代理Demo
    实现一个JDK代理demo
    ClassNotFoundException和 NoClassDefFoundError区别验证
    集合—ArrayList
    Hadoop之Storm基础
  • 原文地址:https://www.cnblogs.com/YajunRan/p/11643330.html
Copyright © 2020-2023  润新知