博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面对对象初识
阅读量:5144 次
发布时间:2019-06-13

本文共 2900 字,大约阅读时间需要 9 分钟。

 

一:面向对象技术简介

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

 二:类的结构:

1 class Myclass:2     name = 'lwx' #静态属性, 静态变量, 静态字段3 4     5     def fun(self): #函数, 动态属性, 方法6         pass7         #函数封装一个功能, 而面对对象封装多个相关的功能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__': 
, 'fun':
, '__dict__':
, 13 '__weakref__':
, '__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.name12 #查13 print(p1.__dic__)

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

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

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

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

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

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

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

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

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

 7:对象的组合

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

  2:组合的方式;

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

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

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

 

       

      

 

转载于:https://www.cnblogs.com/leiwenxuan/p/9524503.html

你可能感兴趣的文章
js编写时间选择框
查看>>
PHP压缩文件操作
查看>>
Java数据结构和算法(四)--链表
查看>>
JIRA
查看>>
小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
查看>>
深浅拷贝(十四)
查看>>
由级别和性格特征将程序员分类 ---看看你属于哪一种
查看>>
HDU 6370(并查集)
查看>>
BZOJ 1207(dp)
查看>>
PE知识复习之PE的导入表
查看>>
HDU 2076 夹角有多大(题目已修改,注意读题)
查看>>
洛谷P3676 小清新数据结构题(动态点分治)
查看>>
九校联考-DL24凉心模拟Day2T1 锻造(forging)
查看>>
洛谷 P3237 [HNOI2014]米特运输
查看>>
Attributes.Add用途与用法
查看>>
JavaScript面向对象初探——封装和继承
查看>>
L2-001 紧急救援 (dijkstra+dfs回溯路径)
查看>>
javascript 无限分类
查看>>
spring IOC装配Bean(注解方式)
查看>>
[面试算法题]有序列表删除节点-leetcode学习之旅(4)
查看>>