侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python 类详解及简单实例

Python  /  管理员 发布于 7年前   190

python 类详解

类

1.类是一种数据结构,可用于创建实例。(一般情况下,类封装了数据和可用于该数据的方法)

2.Python类是可调用的对象,即类对象

3.类通常在模块的顶层进行定义,以便类实例能够在类所定义的源代码文件中的任何地方被创建。

4.实例初始化

  1. instance = ClassName(args....)
  2. 类在实例化时可以使用__init__和__del__两个特殊的方法。
 class ClassName(base):'class documentation string' #类文档字符串 class suite        #类体
  1. base:超类是一个或多个用于继承的父类集合
  2. 类体可以包括:声明语句、类成员定义、数据属性、方法
  3. 如果类不存在继承关系,就不提供括号里的base
 class FirstClass():  spam = 30    #类数据属性  def display(self): #类方法   print self.spam x = FirstClass()   #创建类实例 x.display()     #方法调用 >>> 30 dir(FirstClass) >>> ['__doc__', '__module__', 'display', 'spam']
  • class语句类似def,是可执行代码;直到运行class语句后,类才会创建
  • class语句内,任何赋值语句都会创建类属性
  • 每个实例对象都会继承类的属性并获得自己的名称空间

Python类方法及调用

实例(对象)包含的属性

  • 可调用的属性:方法
  • 数据属性

在OOP中,实例就像是带有“数据”的记录,而类是处理这些记录的“程序”

  • 通过实例调用方法相当于调用所属类的方法来处理当前实例。 比如之前的代码例子,x.display() 会被自动转换为 FirstClass.display(x),即调用类的方法来处理实例x
  • 因此,类中每个方法必须有self参数,它隐含当前实例之意
  • 在方法内对self属性做赋值运算会产生每个实例自己的属性
  • Python规定,没有实例,方法不允许被调用,这是‘绑定'(binding)的概念
  • class语句中的赋值语句会创建类属性,如前面例子的spam
  • 在类方法中对传给方法的特殊参数self进行赋值会创建实例属性

Python构造器

创建实例时,Python会自动调用类中的__init__方法,以隐形的为实例提供属性

  1. __init__方法被称为构造器
  2. 如果类中没有定义__init__方法,实例创建之初仅仅是一个简单的名称空间。
  3. __init__的第一个参数一定是self ,self 变量用于在类实例方法中引用方法所绑定的实例。因为方法的实例在任何方法调用中总是作为第一个参数传递的,self 被选中用来代表实例。你必须在方法声明中放上 self,但可以在方法中不使用实例(self)。如果你的方法中没有用到 self , 那么请考虑创建一个常规函数,除非你有特别的原因。毕竟,你的方法代码没有使用实例,没有与类关联其功能,这使得它看起来更像一个常规函数。在其它面向对象语言中,self 可能被称为 this。
  • __init__不能返回任何对象
  • 析构函数:__del__
  • 构造函数是必要的,而析构函数常常可以不考虑(Python解释器会自己回收)
class MyClass(): def __init__(self, name):  self.name = name  print 'My name is ' + self.name def __del__(self):  print self.name + ' is dead.'i1 = MyClass('Shaw')>>> My name is Shawdel i1>>> Shaw id dead.

类的特殊属性

  • 使用dir()或__dict__,查看类或实例的属性
  • __doc__:获取文档字符串
  • __base__:获取所有父类
  • __module__:类所在的模块
  • __name__:实例所属类的名字

Python类方法中可用的变量

  • 实例变量:self.变量名
  • 局部变量:方法内部创建的变量,可直接使用
  • 静态变量:类中定义的变量。类名.变量名
  • 全局变量:直接使用

继承

继承描述了基类的属性如何‘遗传'给派生类

  1. 子类可以继承他的基类的任何属性,包括数据属性和方法
  2. 一个未指定基类的类,其默认有一个叫object的基类
  3. Python允许多重继承(可以继承多个父类)

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


  • 上一条:
    Python 中urls.py:URL dispatcher(路由配置文件)详解
    下一条:
    Python类的动态修改的实例方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go语言中实现字符串可逆性压缩及解压缩功能(0个评论)
    • 使用go + gin + jwt + qrcode实现网站生成登录二维码在app中扫码登录功能(0个评论)
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客