前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python入门之面向对象

python入门之面向对象

作者头像
一个淡定的打工菜鸟
发布2018-12-27 15:55:00
2550
发布2018-12-27 15:55:00
举报
文章被收录于专栏:淡定的博客淡定的博客

python的基础视频看完了,现在学习一下python的OOP编程

  1. 类的定义:calss name :
  2. 类的调用:name()
  3. 类属性的调用:
  4. 类方法的调用
  5. 调用方法时可以把对象传递过去
  6. 设置属性或者获取属性时尽量用方法获取或者设置(更安全)

__init()__方法

  1. 作用:初始化对象

__str()__方法

  1. 作用:直接打印对象时,返回对象的描述信息,所以定义该方法时必须加:return

私有方法

  1. 直接在方法前面加__
  2. 私有方法只能在类里面调用

__del()__方法

  1. 对象销毁时,并且所有引用都结束时,调用
  2. 或者在程序结束时调用

sys模块

  1. sys.getrefcount()测量对象引用的个数,得到的结果比实际结果多1

类的继承

  1. 使用:在派生类定义的时候,在后面加一个括号,写上基类的名字
  2. 方法重写
  3. 方法重写时,可以调用基类的方法,格式:基类.方法(self)或者使用super,格式:super().基类方法()
  4. 类继承以后私有方法(属性)不被继承
  5. __init()__方法会被继承
  6. 多继承:子类拥有多个父类,使用:直接在括号里面写上多个父类
  7. \类.mro查看类调用方法的顺序(c3算法)

多态

  1. 概念: 等到真正调用的时候才真正确定调用的对象是谁
  2. python多态表现不明显,c或者c++体现明显
  3. 充分体现了动态型语言的特点

类属性跟实例属性

  1. 类属性定义:在类里面定义的属性
  2. python中,一切皆对象,类称为类对象,new出来的类称为实例对象
  3. 实例对象里面的属性称为实例属性
  4. 类对象里面的属性称为类属性
  5. 类对象(属性)只有一个
  6. 类对象(属性)如果发生变化,实例对象(属性)也随之变化
  7. 实例对象(属性)互不关联
  8. 获取类属性,类属性=类名.属性

实例方法,类方法,静态方法

  1. 类方法定义:在方法前面添加:@classmethod ,self改成cls
  2. 可以通过类的名字调用类方法,还可以通过这个类创建出来的对象调用这个类方法
  3. 静态方法定义:在方法前面添加:@staticmethod ,self可以不写class Game(object): #类属性 num = 0 #实例方法 def __init__(self): #实例属性 self.name = "laowang" #类方法 @classmethod def add_num(cls): cls.num = 100 #静态方法 @staticmethod def print_menu(): print("----------------------") print(" 穿越火线V11.1") print(" 1. 开始游戏") print(" 2. 结束游戏") print("----------------------")

耦合与解耦

  1. 理解:联系比较强,比如修改一处代码,另一处也要改,那么这两个地方的耦合就比较强

new方法

  1. 创建对象的方法
  2. object.__new__(cls),实例化对象才能执行init方法
  3. __new__(cls)完成创建
  4. __init__(cls)完成初始化

单例模式

  1. 创建出来的对象始终指向一个内存地址
  2. 示例代码:class Dog(object): __instance=None # 只实例化一次对象 __init_flag=False # 创建对象 def __new__(cls,name): if cls.__instance==None: cls.__instance=object.__new__(cls) return cls.__instance # 如果不是第一次创建对象则返回上次创建的对象 else : return cls.__instance def __init__(self,name): # 只实例化一次对象 if Dog.__init_flag==False: self.name=name Dog.__init_flag=True a=Dog("哮天犬") b=Dog("小白") print(id(a)) print(a.name) print(id(b)) print(b.name)

异常

  1. 异常处理:try: except (NameError,xxx)
  2. Exception
  3. else—-没有异常执行
  4. finally—-最后执行
  5. ctrl+c也是一个异常
  6. 异常的传递
  7. raise抛出自定义异常类
  8. if判断时,空值都是假的,不会执行,例如,””,{},[],(),None,0

模块

  1. import与from import的区别
  2. as起别名
  3. print(__name__),如果是自己调用,打印main,如果是main模块调用,打印模块名字
  4. if __name__==’__main__’

循环遇到的坑

  1. 可能会出现漏删
  2. 解决漏删问题,可以找一个列表把要删除的元素保存起来,

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2e5vz4xc7o00c

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/12/16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • __init()__方法
  • __str()__方法
  • 私有方法
  • __del()__方法
  • sys模块
  • 类的继承
  • 多态
  • 类属性跟实例属性
  • 实例方法,类方法,静态方法
  • 耦合与解耦
  • new方法
  • 单例模式
  • 异常
  • 模块
  • 循环遇到的坑
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档