面向对象,类名称空间查找顺序 和组合

定义面向对象:

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

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

                        定义方式====>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)

四,  对象组合:

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

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

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

                  

                    

                      

          

原文地址:https://www.cnblogs.com/laogao123/p/9355489.html