zoukankan      html  css  js  c++  java
  • day27 Pyhton 面向对象02 类和对象的命名空间

    一.内容回顾

      类:具有相同属性和方法的一类事务

      # 描述一类事务轮廓的一个机制

        #商品/用户/店铺

      对象/实例: 对象(实例)就是类的实例化

        # 对象就是类的一个具体的表现

          #某一件特定的商品/某个人/某一家店

      实例化 : 类 --> 对象

      实例化的过程:

        #1.创建一个属于对象的空间

        #2.执行__init__,把这个空间传递给init的第一个参数

        #3.把这个空间地址作为返回值返回给对象变量

      #如何定义一个类

      #class Cls:pass

      #在类中直接可以定义的内容:

        #静态属性 : 这个类拥有的,所有的对象都共享的属性

        #动态属性: 方法定义在类中的函数,描述的是所有对象共享的行为

      #类名的作用

        #实例化的时候  对象 = 类名()

        # 操作静态属性

      #对象名的作用:

        #操作对象的属性

        #调用方法

    二.今日内容

      #类的命名空间

        #类的代码的执行顺序

        #静态属性的意义,和他所在的位置

        #动态属性所存储的位置

      #对象的命名空间

        #如何建立起和类之间的关系

        #对象的属性是如何存储的

      #组合

        #常用的技能

    # class A:
    #     Country = 'China'
    #     def talk(self):
    #         print('%s is talking'%self.name)
    # alex = A()


    # 一个类可不可以没有__init__? 可以 # 在没有__init__的情况下,实例化经历了哪些步骤??? # 1.创建一个空间给对象 # 2.将这个空间的地址返回 # alex.name = 'alex' # alex.talk()
    # class A:
    #     Country = 'China'
    #     def __init__(self,name):
    #         self.name = name
    #     def talk(self):
    #         print('%s is talking'%self.name)
    # 类中的代码是在什么时候执行的? 在实例化之前
    # 新增静态属性
    # A.静态属性名 = 'abc'
    # print(A.静态属性名)
    # 修改静态属性
    # A.Country = '印度'
    # print(A.Country)
    # 删除静态属性
    # del A.Country
    # print(A.Country)   # 报错
    # print(A.__dict__)  # 只能看,不能改也不能删
    # 类的命名空间中有什么:
        # 静态属性
        # 动态属性(方法)

    #
    对象的命名空间和类的命名空间之间的关系 : # 对象和类之间有一个单向的联系,类对象指针 # 对象在使用某个名字的时候,如果在自己的空间中没有找到,就要到类的空间中去找

    # 如果静态变量是一个不可变数据类型,那么只要对象修改这个数据,就相当于在对象的空间中新建
    # 如果静态变量是一个可变数据类型,那么对象修改这个容器中的元素,相当于修改类的空间中的元素
    # 如果静态变量是一个可变数据类型,那么对象直接对这个变量重新赋值,相当于修改对象自己空间中的元素
    
    # 大结论
    # 只要是静态变量,就用类名去修改,永远修改成功,并且所有的对象都共享这个改变
    # 总结
    # 对象的命名空间:类指针对象的所有属性
    # 类的命名空间:方法和(静态属性字段)
    # 对象在寻找名字的时候 : 先找对象自己内存空间中的,找不到就去类的命名空间中寻找
    # 类中的名字是什么时候写入内存的 : 代码从上到下执行的时候就已经写入的.一定是在实例化之前
    # 静态变量 : 尽量用类名去操作
  • 相关阅读:
    Sys 模块
    Select,poll,epoll复用
    Urllib模块
    多线程模块
    设计模式四:观察者,模板方法,命令,状态,职责链条,解释器,中介者,访问者,策略,备忘录,迭代器
    设计模式三:适配器,桥接,组合,装饰,外观,享元,代理
    设计模式二:建造者,原型,单例
    【Unix 网络编程】TCP状态转换图详解(转)
    Mysql系列:MySql 数据库设计与基本使用
    lombok builder源码解读
  • 原文地址:https://www.cnblogs.com/pythonz/p/9991301.html
Copyright © 2011-2022 走看看