1. 1 多态

多态,即便不知道变量指向的是哪种对象,也能对其执行操作,且操作的行为将随对象所属的类型(类)而异。

1.2 多态与方法

当无需知道对象是什么样的就能对其执行操作时,都是多态在起作用。

 # 使用random模块种的choice函数,随机从序列中选择一个元素
from random import choice
x = choice(['Hello world!', [1, 2, 'e', 'e', 4]]) print(x.count('e')) 结果:1

1.3 封装

封装是指,向外部隐藏不必要的细节。

封装不同于多态,多态让你无需知道对象所属的类(对象的类型)就调用其方法,而封装让你无需知道对象的构造就能使用它。

1.4 继承

2. 类

每个对象都属于特定的类,并被称为该类的实例。在Python中,约定使用英语单数并将首字母大写表示类,如Bird和Lark。

2.1 创建自定义类

 # 创建自定义类
class Person: def set_name(self, name):
self.name = name def get_name(self):
return self.name def greet(self):
print("Hello, World! I'm {}.".format(self.name)) foo = Person()
foo.set_name('Luke Skywallker')
print(foo.greet()) 结果:
Hello, World! I'm Luke Skywallker.
None

3 属性、函数和方法(不是很懂)

方法和函数的区别表现在前一节提到的参数self上。

方法(或者说是 关联的方法)将其第一个参数关联到它所属的实例,因此无需提供这个参数。

 class Class:
def method(self):
print('I have a self!') def function():
print("I don't know....") instance = Class()
# print(instance.method()) # 为什么会连续打印两个结果1)I have a self! 2)None
instance.method()
instance.method = function
instance.method()
4 再谈隐藏
# 将属性定义为私有,私有属性不能从对象外部访问,只能通过存取器方法(如get_name和set_name)来访问
# 要让方法或属性成为私有的(不能从外部访问),只需让其名称以两个下划线打头即可
 class Secretive:
def __inaccessible(self):
print("Bet you can't see me...") def accessible(self):
print("The secret message is: ")
self.__inaccessible() s = Secretive()
# s.__inaccessible() 报错如下:
# Traceback (most recent call last):
# File "D:/Python/PycharmProjects/untitled1/venv/Robots_learning.py", line 1619, in <module>
# s.__inaccessible()
# AttributeError: 'Secretive' object has no attribute '__inaccessible' s.accessible() #结果如下:
# The secret message is:
# Bet you can't see me...

Python基础 第7章 再谈抽象的更多相关文章

  1. Python学习6——再谈抽象(面对对象编程)

    1.对象魔法 在面对对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法. 使用对象而非全局变量以及函数的原因有多个,而最重要的好处不过以下几点: 多态:可对不同类型的对象 ...

  2. Python基础 第三章 使用字符串(3)字符串方法&本章小结

    字符串的方法非常之多,重点学习一些最有用的,完整的字符串方法参见<Python基础教程(第三版)>附录B. 模块string,虽然风头已小,但其包含了一些字符串方法中没有的常量和函数,故将 ...

  3. 第十三章 Python基础篇结束章

    从2019年3月底开始学习Python,4月份开始在CSDN发博客,至今不到半年,老猿认为博客内容中关于Python基础知识的内容已经基本告一段落,本章进入Python基础知识结束章节,对Python ...

  4. Python基础 第6章 抽象

    1. 引言及抽象和结构 生成斐波那契数列的代码如下: fibs = [0, 1] num = int(input('How many num you want:')) for x in range(n ...

  5. Python基础教程-第一章-变量、函数、字符串

    1.1变量 变量基本上就是代表(或者引用)某个值的名字,举例来说,如果希望用x代表3,只需要执行下面的语句即可: >>>x = 3 这样的操作称为赋值(assignment),值3赋 ...

  6. Python基础 第四章 字典(2)字典方法&章小结

    1. clear 方法clear删除所有的字典项,就地执行,什么都不返回(或者说返回None) d = {} d['name'] = 'Gumby' d['age'] = 42 print(d) re ...

  7. python基础教程-第二章-列表和元组

    本章将引入一个新的概念,:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在 一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在python中,最基本的数据结构 ...

  8. Python基础 第5章 条件、循环及其他语句(1)

    1. print和import 1.1 打印多个参数 可用 + 连接多个字符串,可保证被连接字符串前无空格: 可用sep=“_”,自定义各种分隔符: print("I"," ...

  9. Python基础 第5章 条件、循环及其他语句(2)

    6. 简单推导 列表推导,是一种从其他列表创建列表的方式,其原理类似于for循环. list1 = [x * x for x in range(10)] print(list1) 结果: [0, 1, ...

随机推荐

  1. 多项式求逆/分治FFT 学习笔记

    一.多项式求逆 给定一个多项式 \(F(x)\),请求出一个多项式 \(G(x)\), 满足 \(F(x) * G(x) \equiv 1 ( \mathrm{mod\:} x^n )\).系数对 \ ...

  2. ICEM-轴(周期复制网格)

    原视频下载地址:https://yunpan.cn/cqMnfpqQQdZZI  访问密码 802b

  3. Mininet系列实验(五):Mininet设置带宽之简单性能测试

    1.实验目的 该实验通过Mininet学习python自定义拓扑实现,可在python脚本文件中设计任意想要的拓扑,简单方便,并通过设置交换机和主机之间链路的带宽.延迟及丢包率,测试主机之间的性能.在 ...

  4. js修改Switchery复选框的状态

    声明一个switchery插件,绑定到一个input上 js代码 var mySwitch = new Switchery($('#blacklist')[0], { size:"small ...

  5. 咏南中间件新增MORMOT插件功能

    咏南中间件新增MORMOT插件功能 咏南中间件支持DATASNAP和MORMOT两种通讯框架. 原来已经支持DATASNAP插件,现在又增加了MORMOT插件,已经支持DATASNAP和MORMOT两 ...

  6. error storage size of my_addr isn't known

  7. 将bat文件注册成为系统服务

    第一章 注册系统服务准备 1.1      注册系统服务前准备 1.1.1 涉及第三方软件 Bat_To_Exe_Converter.exe (将*.bat文件转化为可执行*.exe文件) insts ...

  8. Docs-.NET-C#-指南-语言参考-预处理器指令:#define(C# 参考)

    ylbtech-Docs-.NET-C#-指南-语言参考-预处理器指令:#define(C# 参考) 1.返回顶部 1. #define(C# 参考) 2018/06/30 使用 #define 来定 ...

  9. SQL-W3School-函数:SQL LAST() 函数

    ylbtech-SQL-W3School-函数:SQL LAST() 函数 1.返回顶部 1. LAST() 函数 LAST() 函数返回指定的字段中最后一个记录的值. 提示:可使用 ORDER BY ...

  10. js根据数据条数与每页多少条数据计算页数,js前端计算页数

    /**  *根据数据条数与每页多少条数据计算页数   * totalnum 数据条数  * limit 每页多少条  */ function pageCount (totalnum,limit){   ...