Knight_day15

【函数汇总、面向对象初识、类名的使用、对象的使用、类名称空间,对象名称空间】

  • 函数汇总

    https://www.processon.com/view/link/62109b5be401fd587b38e325

  • 面向对象初识

    class A:

      name = 'alex' #静态属性

      def fun(self): #方法

        pass

      def __init__(slef): #特殊方法

        pass

    特点:

      1.函数封装一个功能,面向对象封装多个相关功能

      2.抽象,是一种思想,要站在上帝视角理解。共同点:共同属性。不同点:实例化对象。

      3.程序可扩展,对象都是一个个独立的。耦合性,差异性。

    类,对象:

      类:具有相同属性或功能的一类事物。

      对象:对象是类的具体体现。

  • 类名的使用

    一个框架,一个模型

    class Person:

      #属性是一些名词

      animal = '高级动物'

      walk_way = '直立行走'

      language = '语言'

      #方法是一些动词

      def eat(self):

        print('该吃吃该喝喝')

      def work(self):

        print('人类都需要工作')

    类名:

      1.查看类中所有属性和方法 __dict__

        Person.__dict__

        Person.__dict['animal'] #单独可以查,不能增删改

        一般用到__dict__就是查看类中所有属性及方法,不进行其他操作

      2.操作类中某个,某些属性,用万能的点

        Person.animal 查

        Person.name = 'alex' 增

        Person.animal = ‘低级动物’

        del Person.walk_way 删

      3.操作方法(一般不通过类名操作,而是通过对象操作)

        Person.__dict__['work'](由于self,此处需随便传个参数) #不建议

        Person.work(666)

    类名()和__init__:

      类里一般必有__init__(self): #特殊方法,给对象封装属性

      obj = 类名() #这个过程是一个实例化过程,会实例化一个对象(在内存里实例化一个对象空间)

      实例化过程在内存中分三个阶段:

        1.在内存中开辟一个对象空间

        2.自动执行类中__init__方法,并且将对象空间(地址)自动传给self参数,其他参数手动传入

Knight_day15

 

 

         3.执行__init__方法,给对象空间封装相应的属性。

Knight_day15

  • 对象的使用

    对象操作对象空间

      对象查看对象空间的所有属性

        obj.__dict__

      对象操作对象空间的某个属性(增删改查),用万能的点

        obj.sex = '男' #增

    对象操作类空间的属性

      只能查,不能改(其实是在对象空间内增)

    对象操作类空间的方法

      只要类中方法第一个参数是self(粉色),都会自动把对象(地址)传进去(99%)

      obj.eat()

  • 类名称空间,对象名称空间

    公共模板,公共框架

    class GmaeRole:

      实例化游戏人物

    1.对象为什么能调用类中属性和方法且只能调用,不能改变?

Knight_day15

 

 

       obj.属性名:先从自己空间去找,没有此属性再通过类对象指针从类去找,类中找不到,会从父类去找。

      obj.类中属性/方法 = ... 此操作实际是给对象增加一个属性,且再次obj.该类中属性/方法 时,得到的是对象中的值。

      对象只能查看类中属性,不能增删改

    2.类能不能调用对象的属性?

      不能

    3.对象与对象之间可不可以相互调用?

      同一个类实例化的对象之间不能互相访问

      不同类实例化的对象之间可能互相访问

    给对象封装属性:

      __init__

      任意位置:对象.新属性 = 值

           在类中单独一个封装该属性的函数(使用self.新属性)

上一篇:JAVA多线程机制之死锁


下一篇:对盗图、盗文、盗墓深恶痛绝吗?PostgreSQL结合余弦、线性相关算法 在文本、图片、数组相似 等领域的应用 - 2 smlar插件详解