python面向对象编程学习
python面向对象编程
- 基本概念理解
- 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
- 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。
- 而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。
- 面向对象的设计思想是抽象出Class,根据Class创建Instance
类与实例
#对象
class Student(object):
def __init__(self, name, score):
self.name = name;
self.score = score;
def print_score(self):
print('%s: %s' % (self.name, self.score));
def get_grade(self):
if self.score >= 90:
return 'A';
elif self.score >= 60:
return 'B';
else:
return 'C'; bart = Student("yehui", 99);
lisa = Student("yehui01", 55);
bart.print_score();
lisa.print_score();
print(lisa.get_grade());
# 注意到__init__方法的第一个参数永远是self,
# 表示创建的实例本身,因此,在__init__方法内部,
# 就可以把各种属性绑定到self,因为self就指向创建的实例本身。
访问限制
如果我们不想让对象的实例的属性值被外部代码修改的话,我们就可以把属性的名称前面加上两个下划线__,实例的变量名如果以下划线 开头,那么他就是一个私有变量。继承与多态
在面向对象编程的语言中,继承是其主要的特性之一(封装、多态、继承),在python中,他的面向对象编程的继承和c++等面向对象语言相类似,就是子类可以继父类的属性和方法,通过继承,子类获得了父类的全部功能。我就不总结了,下面是他的继承方式及格式:#继承
class Animal(object):
def run(self):
print("Animal is running..."); class Dog(Animal):
def run(self):
print("Dog is running..."); class Cat(Animal):
def eat(self):
print("Cat is meating..."); class Pig(Animal):
pass; dog = Dog();
dog.run();
cat = Cat();
cat.run();
cat.eat();
pig = Pig();
pig.run();
# Dog is running...
# Animal is running...
# Cat is meating...
# Animal is running... 你可以自己在给继承父类的子类添加方法和属性,也可也不添加。也可以重写父类的方法,这样子类的方法将会覆盖掉父类的方法。这就是继承的一个好处:**多态**。 #多态
def run_twice(animal):
animal.run();
animal.run();
run_twice(Animal());
run_twice(Dog());
# Animal is running...
# Animal is running...
# Dog is running...
# Dog is running...
python多态允许我们新增父类的子类。对修改封闭:不需要修改依赖Animal类型的run_twice()等函数。
Python是动态语言来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了
获取对象信息
通过python内置的一系列函数,我们可以对任意一个对象进行剖析
- 使用 type()函数判断对象的类型;
- 使用isinstance()来判断类class的继承类型;
- 使用dir()函数获取一个对象的所以属性和方法。
总结
python的面向对象编程的思想和其他的面向对象程序语言大同小异,只不过是写法和用法的有差异而已,我因为之前有学过c++,所以在这部分的学习比较粗略。
python面向对象编程学习的更多相关文章
- python 面向对象编程学习
1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...
- python 面向对象编程学习总结
面向对象是个抽象的东西,概念比较多,下面会一一介绍. 一.类和实例 类(Class)和实例(Instance)是面向对象最重要的概念. 类是指抽象出的模板.实例则是根据类创建出来的具体的“对象”,每个 ...
- Python面向对象编程指南
Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...
- Python 面向对象编程 继承 和多态
Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...
- 图解python | 面向对象编程
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...
- python 面向对象编程(一)
一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class c ...
- python面向对象编程进阶
python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...
- Python面向对象编程(下)
本文主要通过几个实例介绍Python面向对象编程中的封装.继承.多态三大特性. 封装性 我们还是继续来看下上文中的例子,使用Student类创建一个对象,并修改对象的属性.代码如下: #-*- cod ...
- Python 面向对象编程——访问限制
<无访问限制的对象> 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑.但是,从前面Student类的定义来看(见:Py ...
随机推荐
- python 里面的单下划线与双下划线的区别(私有和保护)
Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from moduleimport *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...
- J2EE之JPA
POJO(plain old java object普通java类):具有setter/getter方法的Java类就称为POJO POJO转化为实体,手工使用标记, @Entity public c ...
- 使用Ehcache缓存同步启动时抛出异常net.sf.ehcache.CacheException: Can't assign requested address
这个问题在插入公司内网网线的时候不会复现,由于我使用的是公司无线网络,故导致此问题. 具体解决办法是:在启动服务时,指定使用默认ipv4的网络接口.可以在启动jvm时添加参数-Djava.net.pr ...
- 最全的sublime插件整理
Package Control 插件管理器 1)在Sublime中打开View –> Show Console,将以下代码复制到输入框中后按回车键 import urllib.request,o ...
- 使用哈工大LTP进行句法分析
作者注:本教程旨在对哈工大LTP在github上的LTP4J(LTP的java版本)教程的补充,请结合以下参考网站一起食用. 参考网站: [1]哈工大语言技术平台云官网--LTP使用文档 http:/ ...
- python连接mongo
连接mongodb数据库 用到pymongo模块 应该是这样来使用: , 'goods') 然后连接数据库层这么写 def getSpinfo(item,value,depart,comp): res ...
- Codeforces Round #475 (Div. 2)
B. Messages 题意:有n个消息分别在ti的时候收到.设所有消息收到时初始值为A,每过一秒,其值减去B.当在某一秒选择读某个消息时,获值为当前消息的值:如果在某一秒结束的时候,手上有k则消息未 ...
- UVALive 6906 A - Cluster Analysis
思路:排个序,依次选就好了. #include <bits/stdc++.h> #define PB push_back #define MP make_pair using namesp ...
- HDU 4370 - 0 or 1 (SPFA+思维)
题意:给一个N*N的矩阵C,和一个N*N的只由0和1组成的矩阵X. X满足以下条件: 1.X 12+X 13+...X 1n=1 2.X 1n+X 2n+...X n-1n=1 3.任意 i (1 ...
- react className 样式控制
1.<div className={ "formbox " + this.state.classArr }></div> 2. this.state.cla ...