zoukankan      html  css  js  c++  java
  • 面向对象,类名称空间查找顺序 和组合

    定义面向对象:

                            类:具有相同属性和技能的一类事物                        对象:   类中个例具体的表现                   实例化;  类 ---->对象的过程

                       一, 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性,而类有两种属性:静态变量和动态变量

                            定义方式====>class Person:                             #   注意类名的首字母要大写

                                                              mind =  '有思想'                 #  变量,静态变量,静态字段

                                                              animal = '高级动物'

                                                               faith = '有信仰'

                                                              def __init__(self,name,age,sex)        

                                                                   self.name = name

                                                                   self.age = age

                                                                   self.sex = sex

                                                               def  work(self):                        # 方法.函数.动态变量

                                                                     print(self)

                                                                     print('人类都会工作')   

                                                               def  shop(self):

                                                                     print('人类可以消费')

      res = Person('高永杰','27','男')                    ==================================>类名+()的这个过程,就是实例,创建一个对象 

      

         注意要点:(1):类名+()产生了一个实例,           

                         (2)自动执行类中__init__方法,将对象空间传值给__init__的self参数      理解:会自动生成一个对象的内存空间,作为参数传值给__init__的self.

                         (3):  给对象封装相应的属性

           二,  类中不同角度的增删改查

                 (1) 类名的角度操作类中的静态变量   (类名+__dict__)

                       print(Person.__dict__ )    ===> 查询类中所有的内容,   所得结果是个字典

                       Person.__dict__  ['mind']        ===>这样也能查

                 对类中单个的变量进行增删改查   (类名+变量名)       万能的

                        print(Person.mind)               ===.>查

                        Person.money = '运用货币'     ===>增

                       Person.mind  = '无脑的'           ===>改

                       del Person.ming                    ===> 删

                      操作类中的函数方法工作中基本不用.     注意类名调用函数时候需要传参

                 (2)对象的角度操作函数中的静态变量,也可以对对象进行增删改查           上面的例子产生了一个res对象

                       pritn(res.__dict__)              ====>查询对象中所有的内容

                       pritn(res.__dict__['name'])    ====>查询对象中指定的内容

                      print(res.mind)                 = ===>  查询类中静态变量  不可以对类中的变量进行删改增

    三,           当程序创建一个类,会开辟一个类名称空间,包含了静态变量关系,和函数的内存地址,(函数内的程序不占用内存的

                    当程序运行到  类名+() 时会自动创建一个实例化的内存空间,与类的名称空间是各自独立的,

                     对象与对象之间是互相独立的,本类对象不能直接调用其他类函数的方法,通过组合可以实现

       查询顺序:

                  对象属性:  先从对象空间找,如果找不到,再从类空间找,再找不到,再从父类空间找.....

                  类名属性:  先从本类空间找,如果找不到,再从父类找........

     统计注册对象个数的方法:        

    class Count:
        count = 0
        def __init__(self):
             Count.count = self.count + 1

    obj1 = Count()
    obj2 = Count()

    print(Count.count)

    四,  对象组合:

                         组合: 给一个类的对象封装一个属性,这个属性是另一个类的对象.,,

                                  函数中提前封装好属性,这个函数的参数接的是另一个类中的对象,

                                  谁来调用这个函数,就将另一个类中的对象作为参数封装给调用者这个对象,

                      

                        

                          

              

  • 相关阅读:
    Java中使用Base64编码URL
    JSON Web Token (JWT)入门学习
    1047. 删除字符串中的所有相邻重复项
    1021. 删除最外层的括号
    使用shell获取随机端口<帮你解决端口的占用烦恼>
    初始化一个vue项目并生成完整的目录结构
    mysql-常用字符函数
    设计模式-单例模式-饿汉和懒汉
    Java-指令的重排序
    Java-反射类加载到内存分析
  • 原文地址:https://www.cnblogs.com/laogao123/p/9355489.html
Copyright © 2011-2022 走看看