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. ansible 主机正则

    ansible <pattern> -m <module_name> -a <arguments> 该功能主要针对Inventory的主机列表,案例如下: 1.AL ...

  2. 让vim更加智能化

    从此,让我的vim更加的智能化,整整用了一个周日,基本是值得的: "新建.c\.cpp\.python\.sh等文件时,使用定义的函数SetTitle,自动插入文件头 func SetTit ...

  3. 【python代码】linux 登陆网关

    #!/usr/bin/env python import urllib2 url="http://10.3.8.211" data="DDDDD=2010111222&a ...

  4. Visual C++ 6.0精简绿色版下载及简单使用教程

    Visual C++ 6.0精简绿色版下载及简单使用教程 Microsoft Visual C++简介 Visual Studio 是微软公司推出的开发环境,Visual Studio 可以用来创建 ...

  5. C语言--输入输出格式

    一.PTA实验作业 题目1:7-3 温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1 ...

  6. apache配置https重定向

    apache配置https重定向 一.总结 一句话总结: 网上找不到答案的原因是因为没有精准的描述问题,没有把问题描述清楚:尽量把关键词描述清楚 1.apache将80端口重定向443的具体步骤(在 ...

  7. ArcGIS数据建模 (模型构建器modelbuilder) 培训视频 5章28小节587分钟视频 51GIS网站上线

    网址:http://www.51gis.com.cn/kecheng.html?id=358

  8. socket_timeout

    https://github.com/pika/pika/blob/03542ef616a2a849e8bfb0845427f50e741ea0c6/docs/examples/using_urlpa ...

  9. vue官网笔记

    学习了vue后又重新过了一遍官网的教程,选择性地摘抄了一些自己觉得比较重要的知识点.以备后面查缺补漏用. 计算属性 计算属性mounted中,属性值函数将用作属性的getter函数.当函数中的依赖发生 ...

  10. python 了解一下__dict__

    写在前面 这几天在写关于描述器的博客,在了解描述器的机制的时候,翻了很多博客里面都提到了__dict__, 我想更多的了解一点描述器的机制,所以我得先弄清楚这个__dict__到底是干啥的. 计算机语 ...