《Python 3.5从零开始学》笔记-第8章 面向对象编程
前几章包括开启python之旅、列表和元组、字符串、字典、条件和循环等语句、函数等基本操作。主要对后面几章比较深入的内容记录笔记。
第8章 面向对象编程
8.3深入类
#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
class MyClass(object):
i=123
def f(self):
return 'hello world' useClass=MyClass()
print('类属性:',useClass.i)
print('类方法:',useClass.f()) #打印系统默认的编码
import sys
print(sys.getdefaultencoding())
输入,必须用python3,如果用python的话,会打印出编码而不是中文:
python3 class_test.py
程序执行结果如下:
类属性: 123
类方法: hello world
utf-8
类中定义方法:第一个参数必须是self,其他和普通函数一样。
类中调用方法:实例变量上直接调用,除了self不用传递,其他参数正常传入。
类对象支持两种操作:属性引用(obj.name,obj代表类对象,name代表属性)、实例化。
类的构造方法
若类不显式地定义一个__init__()方法,则程序默认调用一个无参的__init__()方法。一个类中可定义多个构造方法,但是后面的构造方法会覆盖前面的构造方法,只能根据最后一个构造方法的形式进行实例化。建议一个类中只定义一个构造函数。:
#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
class MyClass(object):
i=123
def __init__(self.name):
self.name = name
def f(self):
return 'hello '+self.name useClass=MyClass('angela')
print('类属性:',useClass.i)
print('类方法:',useClass.f())
输出:
类属性: 123
类方法: hello angela
类的访问权限
#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
class Student(object):
def __init__(self,name):
self.name = name
def info(self):
print('hello '+self.name) stu=Student('angela')
print('修改前的姓名:',stu.name)
stu.info()
#可以在类外部修改类的内部属性
stu.name = 'andrew'
print('修改后的姓名:',stu.name)
stu.info()
输出:
修改前的姓名: angela
hello angela
修改后的姓名: andrew
hello andrew
如上,可以在类外部修改类的内部属性。要让内部属性不让外部访问,属性名称前加两个下划线,self.__name。
如何访问类的私有变量:
#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
class Student(object):
def __init__(self,name):
self.__name = name
def info(self):
print('hello '+self.__name)
def getName(self):
return self.__name
def setName(self,name):
self.__name = name stu=Student('angela')
print('修改前的姓名:',stu.getName())
stu.info() stu.setName('andrew')
print('修改后的姓名:',stu.getName())
stu.info()
输出:
修改前的姓名: angela
hello angela
修改后的姓名: andrew
hello andrew
这样,setName()修改内部属性时可以参数检查,如果传入参数不满足条件,就处理异常。
类的私有方法和私有变量类似,def __setName(self, name)。通过公有方法调用私有方法,self.__setName('Andrew')。
8.4继承
多态
封装
多重继承
参考资料:
参考资料:
《Python 3.5从零开始学》笔记-第8章 面向对象编程的更多相关文章
- 那些年被我坑过的Python——玄而又玄(第六章 面向对象编程基础)
面向对象编程: 面向对象顾名思义,就是把组织代码的粒度从函数级别抽象到对象级别,对象是通过类来生成的,类可以想象为模板或进本框架而对象是在原有模板或框架的基础上增加详细信息的实体,类,有分类.聚类的含 ...
- #《Essential C++》读书笔记# 第五章 面向对象编程风格
基础知识 继承机制定义了父子(parent/child)关系.父类(parent)定义了所有子类(children)共通的共有接口(public interface)和私有实现(private imp ...
- A Byte of Python 笔记(9) 面向对象编程
第11章 面向对象编程 面向过程:根据操作数据的函数或语句块来设计程序. 面向对象(OOP, object-oriented programming):把数据和功能结合起来,用对象包裹组织程序. 类 ...
- Python(三)基础篇之「模块&面向对象编程」
[笔记]Python(三)基础篇之「模块&面向对象编程」 2016-12-07 ZOE 编程之魅 Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...
- Python之路【第五篇】:面向对象编程
面向对象编程思维导向图
- Python实用笔记 (18)面向对象编程——类和实例
类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各 ...
- python学习笔记(四)——面向对象编程
python 支持面向过程编程和面向对象编程. 传统面向过程编程,也叫函数式编程,通过我们的需求设计成一个一个的函数来完成,对一些小规模程序来说面向过程确实简单方便不少.而随着互联网的发展,对于一些大 ...
- 《Clojure编程》笔记 第2章 函数式编程
目录 背景简述 第2章 函数式编程 背景简述 本人是一个自学一年Java的小菜鸡,理论上跟大多数新手的水平差不多,但我入职的新公司是要求转Clojure语言的.坊间传闻:通常情况下,最好是有一定Jav ...
- C#学习笔记(六)——面向对象编程简介
一.面向对象编程的含义 * 是一种模块化编程方法,使代码的重用性大大的增加. * oop技术使得项目的设计阶段需要的精力大大的增加,但是一旦对某种类型的数据表达方式达成一致,这种表达方式就可以 ...
随机推荐
- 2-16 mysql主从复制
1. 部署MYSQL主从同步 <M-S> 环境:mysql版本一致,均为5.7.18 master xuegod4 ip 192.168.10.34 数据库密码 yourpassw ...
- vmware linux无法正常上网
不知道自己怎么搞的整的vmware里面的fedora 12 不能正常上网,但是在宿主机上ping XXX,是正常的.当service network restart 的时候提示MAC有问题.网上百度了 ...
- SICP 关于递归迭代的重新理解以及尾递归的引入...
看了线性的递归和迭代以及树形递归迭代这部分的内容,感觉对递归和迭代又有了新的理解...所以记录一下,也算对这部分内容的总结吧. 首先书中提到的递归与迭代和我以前想的有点不一样,我感觉书中提到的递归和迭 ...
- QT添加openssl的方法
Assuming Windows you can download its installation from Win32 OpenSSL Installation Project page. You ...
- iOS-HTTP浅析
HTTP原理 什么是URL URL中常见的几种协议 什么是HTTP协议 HTTP是做什么的 为什么要使用HTTP协议 HTPP协议的通信过程介绍 HTTP请求 HTTP响应 HTTP请求的选择 两种发 ...
- 指定Qt程序运行的style,比如fusion(以前没见过QStyleFactory)
转载请注明文章:指定Qt程序运行的style,比如fusion 出处:多客博图 代码很简单,如下: #include <QtWidgets/QApplication> #include ...
- 微信小程序把玩(二十九)video组件
原文:微信小程序把玩(二十九)video组件 视频播放组件与图片加载组件也没啥差别,使用起来也没啥注意的 重要属性: wxml <!--监听button点击事件--> <button ...
- Capsule Network
Capsule Network最大的特色在于vector in vector out & 动态路由算法. vector in vector out 所谓vector in vector out ...
- hadoop之hive高级操作
在输出结果较多,需要输出到文件中时,可以在hive CLI之外执行hive -e "sql" > output.txt操作 但当SQL语句太长或太多时,这种方式不是很方便,可 ...
- Python连载12-shutil模块
一.shutil模块 1.函数:copy() (1)用法:复制文件0 (2)格式:copy(来源路径,目标路径) (3)返回值:返回目标路径 (4)注意:拷贝的同时可以给文件重命名 source_pa ...