第四章 python中的面向对象设计
一、首先来理解几个面向对象的关键特性:
1、封装:对象可以将他们的内部状态隐藏起来。python中所有特性都是公开可用的。
2、继承:一个类可以是一个或多个类的子类。python支持多重继承,使用时需要注意继承顺序。
3、多态:实现将不同类型的类的对象进行同样对待的特性--不需要知道对象属于哪个类就能调用方法。
二、创建自己的类
>>> class Person:
... def setname(self,name):
... self.name = name
... def getname(self):
... return self.name
...
>>> p = Person()
>>> p.setname('darren')
>>> p.getname()
'darren'
很简单吧,这里有个self参数需要说明的,可以称为对象自身,它总是作为对象方法的第一个参数隐式传入!那么类中的有些方法不想被外部访问怎么办?
可以在方法前加双下划线,如下:
>>> class Sercrt:
... def greet(self):
... print("hello,abc")
... def __greet1(self):
... print("i don't tell you ")
...
>>> s = Sercrt()
>>> s.greet()
hello,abc
>>> s.__greet1()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: Sercrt instance has no attribute '__greet1'
如何指定超类呢?通过子类后面跟上括号里面写入基类即可实现。
>>> class Bird:
... def fly(self):
... print("I want to fly more and more higher")
...
>>> class Swallow(Bird):
... def fly(self):
... print("Swallow can fly")
...
>>>
>>> s = Swallow()
>>> s.fly()
Swallow can fly
1、构造方法:创建一个新对象时,调用构造方法,用于类的初始化
python中用__init__()表示构造方法,当子类继承父类时,如果子类重写了构造方法,这时如果要继承父类的构造方法,需要用super(子类,self).__init__()
2、属性:porperty(get,set)
3、静态方法和类成员方法:这两种方法无需创建对象,直接通过类名称进行调用,如下:
>>> class Myclass:
... @staticmethod
... def smeth():
... print("i am static method")
... @classmethod
... def cmeth(cls):
... print("i am class method")
...
>>>
>>> Myclass.smeth()
i am static method
>>> Myclass.cmeth()
i am class method
第四章 python中的面向对象设计的更多相关文章
- 面向对象相关概念与在python中的面向对象知识(魔法方法+反射+元类+鸭子类型)
面向对象知识 封装 封装的原理是,其成员变量代表对象的属性,方法代表这个对象的动作真正的封装是,经过深入的思考,做出良好的抽象(设计属性时用到),给出“完整且最小”的接口,并使得内部细节可以对外透明( ...
- [Python学习笔记][第四章Python字符串]
2016/1/28学习内容 第四章 Python字符串与正则表达式之字符串 编码规则 UTF-8 以1个字节表示英语字符(兼容ASCII),以3个字节表示中文及其他语言,UTF-8对全世界所有国家需要 ...
- [Python笔记][第四章Python正则表达式]
2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- 【转】python 历险记(四)— python 中常用的 json 操作
[转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...
- 计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具
计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具 一 基础 1:向量分析和变换 两个工具 可以设计出各种几何对象 点和向量基于坐标系定义 拇指指向z轴正 ...
- 22.python中的面向对象和类的基本语法
当我发现要写python的面向对象的时候,我是踌躇满面,坐立不安呀.我一直在想:这个坑应该怎么爬?因为python中关于面向对象的内容很多,如果要讲透,最好是用面向对象的思想重新学一遍前面的内容.这个 ...
- python中的面向对象和面向过程
一.面向对象和面向过程 一.什么是面向过程 核心是过程二字:面向过程是一种流水线的工作流程,是先做什么在做什么 二.什么是面向对象 核心 是对象二字:是一种编程思想,上帝思维,一切皆对象,编程中负责调 ...
- 《Python CookBook2》 第四章 Python技巧 对象拷贝 && 通过列表推导构建列表
(先学第四章) 对象拷贝 任务: Python通常只是使用指向原对象的引用,并不是真正的拷贝. 解决方案: >>> a = [1,2,3] >>> import c ...
随机推荐
- JDBC技术总结(二)
上一节主要讲了JDBC的基本操作,这一节主要总结一下JDBC如何处理大文本.如何处理图片以及进行批处理. 1.JDBC处理大文本 在MySQL中,大文本是text类型,使用Java操作数据库中的大文本 ...
- 【优才原创】Android的拖放机制
优才网 [优才原创]Android的拖放机制 2016-04-18 优才学院 优才网 一.拖放机制概述 ² 拖放操作是手指触摸屏幕上的某一对象.然后拖动该对象.最后在屏幕的某个位置释放该对象并运行某种 ...
- C#中Lock静态字段和实例字段
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- php使用imagick模块实现图片缩放、裁剪、压缩示例
PHP 使用Imagick模块 缩放,裁剪,压缩图片 包括gif图片 缩放 裁剪 复制代码代码如下: /** * 图片裁剪 * 裁剪规则: * 1. 高度为空或为零 按宽度缩放 高度自适 ...
- MySql 数据库系列问题
0. 我的MYSQL学习心得(四) 数据类型(系列文章) 1.MySql数据库学习--存储过程(1) 0.[转]MySQL存储过程调试工具-dbForge Studio for MySQL ①.存储过 ...
- Map 和 javaBean转换
package com.siang.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.bean ...
- php扩展安装phpize
安装php(fastcgi模式)的时候,常常有这样一句命令:/usr/local/webserver/php/bin/phpize 一.phpize是干嘛的? phpize是什么东西呢?php官方的说 ...
- POJ3468_A Simple Problem with Integers(线段树/成段更新)
解题报告 题意: 略 思路: 线段树成段更新,区间求和. #include <iostream> #include <cstring> #include <cstdio& ...
- 爬虫入门【3】BeautifulSoup4用法简介
快速开始使用BeautifulSoup 首先创建一个我们需要解析的html文档,这里采用官方文档里面的内容: html_doc = """ <html>< ...
- Robbery(记忆化搜索)
Robbery Inspector Robstop is very angry. Last night, a bank has been robbed and the robber has not b ...