Python学习笔记016——面向对象
面向对象是指用类来描述一个对象(实例),用类来建立实例与实例的关联关系
对象 : object 实例 : instance
1 类
1.1 什么是类
类是用来描述对象的工具,用类可以创建一个或多个同类对象。类 : class
1.2 类的作用
用来描述对象
用来创建具有相同属性的同类对象
1.3 类的创建
class 类名(继承列表): ””” 类文档字符串 “““ 实例方法(类内的函数methed)定义 类变量定义 类方法(@classmethod)定义 静态方法(@staticmethod)定义
注意:
1、类名必须是标识符
2、类名实质上是变量,它绑定一个类
3、类的定义的前后要加两个空行以告诉解释执行器,类的定义已经开始和结束
4、在python程序中,每个实例可以有自己的变量,每个实例变量有自己独立的作用域
示例
# 定义一个类 class Car: pass # 创建一个Car实例 c1 = Car() c2 = Car()
其实我们经常用的list函数也是类,在定义列表时(a = list()),其实也是实例化的过程。
1.4 实例变量的语法调用
实例.变量名 实例.变量名 = 表达式 # 创建或修改实例变量 v = 实例.变量名 # 获取实例变量绑定的对象
注意:
实例变量的首次赋值为创建,再次赋值为改变变量的绑定关系
2 实例方法
class 类名(继承列表): def 实例方法名(self, 参数1, 参数2, ...): "实例方法的文档字符串" 语句块
注意:
1、实例方法的本质是函数,确切地说是定义在类内的函数。
2、实例方法属于类的属性。
3、实例方法的第一个参数为调用该方法的实例,一般命名为self
4、实例方法中若没有return语句则返回None
2.1 实例方法的调用
实例.实例方法名(调用参数) 类名.实例方法名(实例,调用参数)
上数两种方式均可。
3 构造方法
构造方法也称之为初始化方法
语法格式
class 类名(继承列表): def __init__(self [, 参数列表]): 语句块
注意:
1、构造方法名必须是init。
2、每一个类内只能由一个构造方法init起作用。
3、构造方法会在实例生成时自动调用,且将实例自身(作为实参)对标init中的self形参。
4、构造方法中若无return语句,则返回None
4 析构方法
析构方法语法
语法格式 : class 类名(继承列表): def __del__(self): 语句块
注意:
1、析构方法在对象被销毁时自动调用
2、在python语言中,建议不要在对象销毁时做任何事情,因销毁的时间难以确定
5 预置实例属性(实例变量):
5.1 dict属性:
通常每一个对象(实例)都有一个__dict__属性
__dict__属性绑定一个存储此实例自身变量的字典
例如:
class Dog: def __init__(self, colour,name): self.colour = colour self.name = name def dog(self): print(self.name,"的体毛颜色是",self.colour) dog1 = Dog("white","husky") dog1.dog() print(dog1.__dict__)
运行结果
husky 的体毛颜色是 white {'name': 'husky', 'colour': 'white'}
5.2 doc属性
记录文档字符串, 用于help帮助
此文档字符串与类的文档字符串相同
5.3 class属性
用于绑定创建此实例的类对象(类实例)
注:
可以借助此属性来创建同类对象
可以借助此属性来访问类对象(类实例)
class Dog: def __init__(self, colour,name): self.colour = colour self.name = name def dog(self): print(self.name,"的体毛颜色是",self.colour) dog1 = Dog("white","husky") dog2 = dog1.__class__("black","Beagle") # 创建dog2 dog1.dog() dog2.dog() print(dog1.__dict__)
运行
husky 的体毛颜色是 white Beagle 的体毛颜色是 black {'colour': 'white', 'name': 'husky'}
5.3 类变量
是指在类class 内定义的变量(注意:此变量属于类,不属于此类的实例)
类变量可以通过该类直接访问
类变量可以通过类的实例直接访问
类变量可以通过此类的对象的class属性间接访问
Python学习笔记016——面向对象的更多相关文章
- python 学习笔记7 面向对象编程
一.概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." ...
- python学习笔记六 面向对象相关下(基础篇)
面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以将多函数中公用的变量封装到对象中) 对象,根据模板创建的 ...
- python学习笔记_week6_面向对象
面向对象 介绍(特性(class.object--->封装.继承,多态)).--->世界万物,皆可分类:世界万物,皆可对象 只要是对象,就肯定属于某种品类:只要是对象,就肯定有属性 你是上 ...
- python学习笔记(七):面向对象编程、类
一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...
- python学习笔记(6)--面向对象学习
本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引言 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做(人狗大战)的游戏,你就思 ...
- python学习笔记(10):面向对象
一.类和实例 1.类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 2.对象:通过类定义的数据结构实例.对象包括两个数据成员( ...
- python学习笔记(7): 面向对象
class Foo: #类中的函数 def bar(self): #功能阐述 print('Bar') pass def hello(self,name): print('i am %s' %name ...
- Python学习笔记之面向对象
下面是初步总结的Python的面向对象的参数定义,后面会逐渐完善面向对象的相关知识.
- Python学习笔记捌——面向对象高级编程
__slots__特殊变量的使用: 由于Python是动态语言,允许先编写类,然后在创建实例的时候添加属性或者方法:而__slots__特殊变量就是,限制往类里添加属性的: 在创建类的时候,使用__s ...
随机推荐
- UVA 400 (13.08.05)
Unix ls The computer company you work for is introducing a brand new computer line and is developi ...
- 几个不同版本的framework改进
一些主要的演变过程及改进,还有很多部分不可能一一列出,下面是从1.1到4.0的一些主要改进: 一..NET Framework 1.1版本 1.ASP.NET移动控件 2.ADO.NET的改动 添加S ...
- Android UI-底部旋转菜单栏
以前都是说每逢佳节倍思亲,现在的工作状态是每到周末倍亲切,年底真的是加班加的没完没了的,也没时间写博客,也没时间学习,周末闲来无事看到一个比较有意思的旋转菜单,没事自己实战了一下感觉还不错,代码倒是没 ...
- C# 的三种序列化方法
序列化是将一个对象转换成字节流以达到将其长期保存在内存.数据库或文件中的处理过程.它的主要目的是保存对象的状态以便以后需要的时候使用.与其相反的过程叫做反序列化. 序列化一个对象 为了序列化一个对象, ...
- Android GUI之Window、WindowManager
通过前几篇的文章(查看系列文章:http://www.cnblogs.com/jerehedu/p/4607599.html#gui ),我们清楚了Activity实际上是将视图的创建和显示交给了Wi ...
- 对SingleTask和TaskAffinity的理解
最近研究微信调起自己客户端的事情,对于SingleTask和TaskAffinity的理解又多了一些理解. 以前对于Android的四种LaunchMode有一些了解,其中比较有意思的就是Single ...
- Cognos创建Oracle数据源错误以及客户端生成加密信息错误
报加密错误,先删除 signkeypair csk encrytkeypair三个目录错误一: 创建Oracle数据源错误,在cognos connection中创建oracle的数据源,一直测试不成 ...
- 微信小程序中用户唯一ID的获取
折腾到半夜,搞得挺兴奋,总结一下,免得忘了: 1.微信小程序直接获得的是一些简单信息,基本无用 2.用户唯一标识是openid,还有一个unionid是关联多个公众号之类情况下用,我不大关心 3.在g ...
- 【Linux】关于Linux的部分细节与配置文件
文章对Linux的启动过程 进行了讲解,摘录一些要点,(摘自:https://www.ibm.com/developerworks/cn/linux/l-linuxboot/)如下: 当系统首次引导时 ...
- 飘逸的python - 使用reload进行热更新
一开始我们的游戏商城配置是从txt读取解析的. 后来为了方便运营修改配置,改成从数据库读取并提供后台可视化编辑配置. 如果为了使配置生效而重启游戏进程那太麻烦了. 这时候reload就派上用途了. 下 ...