前几章包括开启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继承

多态

封装

多重继承

参考资料:

python3编码问题

python编码

参考资料:

python tutorial 3.6

Python博客

python多态

《Python 3.5从零开始学》笔记-第8章 面向对象编程的更多相关文章

  1. 那些年被我坑过的Python——玄而又玄(第六章 面向对象编程基础)

    面向对象编程: 面向对象顾名思义,就是把组织代码的粒度从函数级别抽象到对象级别,对象是通过类来生成的,类可以想象为模板或进本框架而对象是在原有模板或框架的基础上增加详细信息的实体,类,有分类.聚类的含 ...

  2. #《Essential C++》读书笔记# 第五章 面向对象编程风格

    基础知识 继承机制定义了父子(parent/child)关系.父类(parent)定义了所有子类(children)共通的共有接口(public interface)和私有实现(private imp ...

  3. A Byte of Python 笔记(9) 面向对象编程

    第11章  面向对象编程 面向过程:根据操作数据的函数或语句块来设计程序. 面向对象(OOP, object-oriented programming):把数据和功能结合起来,用对象包裹组织程序. 类 ...

  4. Python(三)基础篇之「模块&面向对象编程」

    [笔记]Python(三)基础篇之「模块&面向对象编程」 2016-12-07 ZOE    编程之魅  Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...

  5. Python之路【第五篇】:面向对象编程

    面向对象编程思维导向图

  6. Python实用笔记 (18)面向对象编程——类和实例

    类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各 ...

  7. python学习笔记(四)——面向对象编程

    python 支持面向过程编程和面向对象编程. 传统面向过程编程,也叫函数式编程,通过我们的需求设计成一个一个的函数来完成,对一些小规模程序来说面向过程确实简单方便不少.而随着互联网的发展,对于一些大 ...

  8. 《Clojure编程》笔记 第2章 函数式编程

    目录 背景简述 第2章 函数式编程 背景简述 本人是一个自学一年Java的小菜鸡,理论上跟大多数新手的水平差不多,但我入职的新公司是要求转Clojure语言的.坊间传闻:通常情况下,最好是有一定Jav ...

  9. C#学习笔记(六)——面向对象编程简介

    一.面向对象编程的含义 *   是一种模块化编程方法,使代码的重用性大大的增加. *   oop技术使得项目的设计阶段需要的精力大大的增加,但是一旦对某种类型的数据表达方式达成一致,这种表达方式就可以 ...

随机推荐

  1. jquery 选择标题标签

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  2. Win8Metro(C#)数字图像处理--2.23二值图像开运算

    原文:Win8Metro(C#)数字图像处理--2.23二值图像开运算  [函数名称] 二值图像开运算函数OpenOperateProcess(WriteableBitmap src) [算法说明 ...

  3. Android零基础入门第24节:自定义View简单使用

    原文:Android零基础入门第24节:自定义View简单使用 当我们开发中遇到Android原生的组件无法满足需求时,这时候就应该自定义View来满足这些特殊的组件需求. 一.概述 很多初入Andr ...

  4. Advanced Installer 安装前卸载旧版本的办法

    原文:Advanced Installer 安装前卸载旧版本的办法 Advanced Installer这个工具百度出来的资料太少了. 在我们平常打包的工作中,经常遇到的一个问题是,如何能在安装新版本 ...

  5. Android 动画基础——视图动画(View Animation)

    本篇讲android 3.0之前被广泛的动画框架——ViewAnimation. 目录 我将分为六部分来讲: 概述 Alpha透明动画 Rotate旋转动画 Translate位移动画 Scale放缩 ...

  6. SGI地址模式: O32, N32和N64

    背景 MIPS R10000芯片支持MIPS ABI.遵循这一标准的程序能够运行在遵循这一标准的任何处理器/系统上.目前,主要的支持者有SGI,西门子,Nixdof, Tandem, Pyramid, ...

  7. 网站运行编译器错误CS1617: 选项“6”对 /langversion 无效;必须是 ISO-1、ISO-2、3、4、5 或 Default

    运行winform程序时提示, CS1617: 选项“6”对 /langversion 无效:必须是 ISO-1.ISO-2.3.4.5 或 Default 找到网站的web.config配置文件,找 ...

  8. Office Add-in Model 简介

    原文地址:http://simpeng.net/office-add-in/office-add-in-model-%e7%ae%80%e4%bb%8b/ , 为了本博客内容的完整性,转载至此. Of ...

  9. 一个类的实例化对象所占空间的大小(对象大小= vptr(可能不止一个) + 所有非静态数据成员大小 + Aligin字节大小(依赖于不同的编译器))

    注意不要说类的大小,是类的对象的大小. 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的. 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小. 如果 Class ...

  10. 让Qt在MIPS Linux上运行 good

    下载 首先下载Qt everywhere,当前的版本是4.7.2,可以从nokia的网站上下载,也可以从git服务器上下载.考虑到文件有200M 以上的大小,下载速率低于25kBPS的,需要考虑从什么 ...