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. geometry_msgs/PoseStamped 类型的变量的构造

    #navpoint.msg geometry_msgs/PoseStamped target_pose uint8 floor uint8 type target_pose 的类型为geometry_ ...

  2. 模板 - Codeforces模板

    #include<bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 2e5; const ...

  3. 什么是vue的全家桶

    vue.js有著名的全家桶系列,包含了vue-router,vuex, vue-resource,再加上构建工具vue-cli,就是一个完整的vue项目的核心构成.

  4. mapper @Select()注解开发,使用模板 if 和循环

    if @Select({"<script>", "SELECT " + " mu.id userId, " + " e ...

  5. Go --- 七牛云 上传文件 & Token demo

    package main import ( "bytes" "crypto/hmac" "crypto/sha1" "encodi ...

  6. How to transform the day time images to night time ? A series of paper review and some thinkings about this point.

    How to transform the day time images to night time ?  A series of paper review and some thinkings ab ...

  7. linux内核中#if IS_ENABLED(CONFIG_XXX)与#ifdef CONFIG_XXX的区别

    1. #if IS_ENABLED(CONFIG_XXX) 1.1 IS_ENABLED的定义如下: /* * IS_ENABLED(CONFIG_FOO) evaluates to 1 if CON ...

  8. VSCode 设置 Tab 空格

    Windows 点击左下角的 Setting 按钮 输入 tabSize 进行查找

  9. i18n 语言码和对应的语言库

    语言码 语言名称 af Afrikaans am Amharic ar Arabic az Azerbaijani be Belarusian bg Bulgarian bh Bihari bn Be ...

  10. web手工项目01-系统组织框架-测试流程-需求评审-测试计划与方案

    回顾 SVN(定义,作用,使用操作) 软件缺陷(定义,表现形式,原因和根源,基本内容,跟踪流程) JIRA(基本介绍,使用者,工作流,问题,使用) 学习目标 掌握WAMP的环境搭建 掌握熟悉项目的步骤 ...