• 面对对象初识


    一:面向对象技术简介

    • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
    • 方法:类中定义的函数。
    • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
    • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
    • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
    • 实例变量:定义在方法中的变量,只作用于当前实例的类。
    • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系。
    • 实例化:创建一个类的实例,类的具体对象。
    • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

     二:类的结构:

    1 class Myclass:
    2     name = 'lwx' #静态属性, 静态变量, 静态字段
    3 
    4     
    5     def fun(self): #函数, 动态属性, 方法
    6         pass
    7         #函数封装一个功能, 而面对对象封装多个相关的功能
    8         #面对对象抽象, 它是一种思想, 站在上帝的角度去理解他
    9         #程序可扩展, 对象都是一个个独立的, 耦合性, 差异性。

    三:类实例化一个例子:

     1 class Person: #一个公共框架, 一个公共模型
     2     animal = '神级人物'
     3     walk_way = '我是天使,我会飞!'
     4     language = 'ASCCI'
     5     def __init__(self, name, eag): #功能:给对象封装属性
     6        self.name = name
     7         self.eag = eag
     8     def walk(self):
     9         print(4444)
    10 p1 = Person('lwx', 25)  #创建一个类的实例,累的具体对象
    11 #实例化内部进行了三个阶段吧
    12 # 1:从内存中开辟了一个对象空间
    13 # 2:自动执行类中__init__方法,并且将对象空间自动传给self参数,其他参数手动传入
    14 # 3:执行__init__方法,并将对象空间封装相应的属性

     四:查看类对象的方法

      1,类

        1》查看类中的所有属性及方法

        

     1 class Person:
     2     name = 'lwx'
     3     eag = 25
     4     def __init__(self,sex, work):
     5         self.sex = sex
     6         self.work = work
     7     def fun(self):
     8         print('我是一个方法')
     9 #1:查看类中的所有属性及方法
    10 # print(Person.__dict__)
    11 '''{'__module__': '__main__', 'name': 'lwx', 'eag': 25, '__init__': <function Person.__init__ at 
    12 0x03679540>, 'fun': <function Person.fun at 0x036794F8>, '__dict__': <attribute '__dict__' of 'Person' objects>, 
    13 '__weakref__': <attribute '__weakref__' of 'Person' objects>, '__doc__': None}'''
    14 Person.__dict__['name'] = 'alex' #不能改变
    15 print(Person.__dict__['name']) #可以查询

        注意点:工作中,学习中一般用到的___dict__查看类中的所有属性及方法,不进行其他操作

        2》查看, (增删改)类中某个, 某些属性用到万能的 .

          

    1 print(Person.name) #查询类中的变量
    2 Person.name = '雷文轩' #修改
    3 Person.animal = '高级任务' #没有的变量名字是增加,有的是改
    4 del Person.name #删除
    5 print(Person.__dict__) #name 已经移除

      2:对象

        1》实例化过程内部进行了3个阶段

          (1):在内存中开辟了一个对象空间

          (2):自动执行类中的__init__方法, 并且将对象空间自动传给self参数

          (3):执行__init__ 方法, 给对象空间封装相应的属性

        2》对象操作对象空间

          (1)查看对象空间所有的属性__dict__

             1 p1 = Person(25, 'IT') 2 print(p1.__dict__) 

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

          

     1 #增加
     2 # p1.name = 'wuyan' #对象的增加
     3 print(p1.name) #此时的p1.name 是类的里面的
     4 p1.name = p1.name #=号右边值添加给对象name
     5 #对象操作类空间的属性只能查
     6 print(p1.__dict__)
     7 p1.__dic__ = {1:2} #一般不这样操作的
     8 print(p1.__dic__)  #此时对象只有{1:2}
     9 
    10 #删除
    11 del p1.name
    12 #
    13 print(p1.__dic__)  

    5:类名称空间 和公共空间

      1》类是一个公用模板, 公用框架

      2》对象为什么能调用类中的属性与方法而且只能调用,不能改变?

        首先对象从自己的空间去找, 没有属性他会通过类对象,对象只能查看类中的属性, 不能增删改类中的属性

      3》类能不能调用对象的属性? 不能

      4》对象与对象之间可不可互相调用?

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

        不同类势力化的对象有可能互相访问

     6:给对象封装属性: __init__任意位置。

     7:对象的组合

      1:组合的意义:让类的对象与另一个类的对象产生关系,类与类之间产生关系

      2:组合的方式;

        1》:一种是在类里面封装一个方法

        2》:另一种是直接给对象添加一个属性等于一个对象名,通过赋值的属性调用另一个对象,

        2:不同类对象可以相互关联,这样就可以调用

           

          

  • 相关阅读:
    爬取某APP的数据
    GPU操作
    Beyond过期处理方法
    tensorRT安装
    YOLOX multiGPU training
    linux服务器环境部署(三、docker部署nginx)
    linux服务器环境部署(二、docker部署jhipster-registry)
    linux服务器环境部署(一、docker部署)
    CAP原则
    热部署live-server
  • 原文地址:https://www.cnblogs.com/leiwenxuan/p/9524503.html
Copyright © 2020-2023  润新知