《python基础教程》笔记之 更加抽象

  • 方法、函数和特性

函数和方法的区别在于self参数,方法(绑定方法)将它们的第一个参数帮顶到所属的实例上,因此这个参数可以不必提供。可以将特性绑定到一个普通函数上,这样就不会有特殊的self参数了,换言之,特性可以绑定到方法上,也可以绑定到函数上,两者的区别便是方法将自己绑定到了一个实例上,如

>>> class Class:
    def method(self):
        print ‘I have‘
>>> def function():
    print ‘i do not‘
>>> instance = Clas()
>>> instance = Class()
>>> instance.method()
I have
>>> instance.method = function
>>> instance.method()
i do not

self参数并不取决于调用方法的方式,目前使用的是实例调用方法,可以随意使用引用同一个方法的其他变量,换言之,self参数的传入,并不仅仅是在实例调用方法时发生,如果方法被其它变量引用,而此变量在使用时,self参数同样会自动传入,如

>>> class Bird:
    song = ‘hello‘
    def sing(self):
        print self.song

>>> bird = Bird()
>>> bird.sing()
hello
>>> birdsong = bird.sing
>>> birdsong()
hello
  • 私有化的技巧

为了让方法或者特性变为私有,只要在它的名字前面加上双下划线即可,而在类的内部定义中,这些名字都被“翻译”成前面加上单下划线和类名的形式;或者使用单下划线,也会有一些实际效果,如不能被带星号的imports语句(from module import *)导入。

  • 类的命名空间

类的定义其实就是执行代码块,所有位于class语句中的代码都在特殊的命名空间中执行 --- 类命名空间,如

>>> class C:
    print ‘Class C being defined ...‘

Class C being defined ...
>>> class MemberCounter:
    member = 0
    def init(self):
        MemberCounter.member += 1

>>> m1 = MemberCounter()
>>> m1.init()
>>> MemberCounter.member
1
>>> m2 = MemberCounter()
>>> m2.init()
>>> MemberCounter.m
>>> MemberCounter.member
2
  • 面向对象模型相关

草图步骤:

1. 写下问题的描述(程序要做什么?),把所有名词、动词和形容词加下划线

2.对于所有名词,用作可能的类

3.对于所有的动词,用作可能的方法

4.对于所有的形容词,用作可能的特性

5.把所有方法和特性分配到类

精炼模型:

1.写下(或者想象)一系列的使用实例----也就是程序应用时的场景,试着包括所有的功能

2.一步步考虑每个使用实例,保证模型包括所有需要的东西。如果有些遗漏的话就添加进来。如果某处不太正确则改正。继续,直到满意为止。

  • 其他

将其它类名写在class语句后的圆括号内可以指定超类,如

class SubClass(SuperClass):

def class

issubclass -- 查看一个类是否是另一个类的子类

__bases__  -- 获得已知类的基类们

isinstance  -- 检查一个对象是否是一个类的实例

__class__ -- 知道一个对象属于哪个类

hasattr -- 检查所需的方法是否已经存在

getattr -- 获取对象特性

setattr -- 设置对象的特性

时间: 2024-10-06 19:46:53

《python基础教程》笔记之 更加抽象的相关文章

python基础教程笔记——画幅好画(详解)

今天写一下基础教程里面的第二个项目,主要使用python来做一个pdf的图,比较简单. 首先我们需要安装用到的模块pip install reportlab即可. 书上是用urlopen从往上下了一个txt文件,然后打开处理一下得到数据,因为我从这个url路径没有获取到数据,所以直接写了一点数据在程序里. urlopen比较简单,以后写爬虫也会经常用到,所以这里就不讲了,只单独讲讲reportlab模块. #encoding:utf8 from reportlab.graphics.shapes

python 基础教程 笔记 一

第一章 python 基础知识 1.1 数字和数学表达式 1.2 python 2.x 和python 3.x print的区别 1.3 python 2.x 和 python 3.x input 的区别 1.4 数学函数 1.5 input 和 raw_input 区别 第二章 列表和元组 第三章 使用字符串 1.1 数字和表达式 Python 默认的除法:整数/整数,无论是否整除都得到整数,不整除的截取小时部分 1 / 2 0 如果想要Python 执行普通的除法,可以之用浮点数来实现也可以

Python基础教程笔记——第7章:更加抽象(类)

下面进入Python的面向对象: 对象的魔力: 多态:---可以对不同类的对象使用同样的操作 封装:---对外部隐藏对象内部的工作方式 继承:---以普通的类为基础建立专门的类对象 (1)多态: isinstance(...) isinstance(object, class-or-type-or-tuple) -> bool   检查object的类型 isinstance(object, tuple) 检查是否为元组 绑定到对象上的函数称为方法   例如>>> [1,2,'a'

Python基础教程笔记——第6章:抽象(函数)

(1)计算裴波那契数列: 1 fbis=[0,1] 2 num=int(input("please input the number")) 3 for i in range(num-2): 4 fbis.append(fbis[-2]+fbis[-1]) 5 print(fbis) 6.3 创建函数 callable():函数可以确定函数是否可以被调用 最简单的例子: 1 def hello(name): 2 return "hello"+name+"ar

python基础教程笔记 第1单元 && 第2单元

1.http://docs.python.org/dev/3.0/whatsnew/3.0.htmlpython-announce-listpython-help2.交互式编译器3.非整数除法 .1.>>> from__future__import divisionSyntaxError: invalid syntax.2.Linux -Qnew4.整数除法 // 就算是浮点数也会执行整除取余 2.75%0.5幂运算符 ** (pow(base,times[mod]))幂运算符比取反等级

Python基础教程笔记——使用字符串

使用字符串 Table of Contents 1 基本字符串操作 2 字符串格式化:精简版 2.1 用字符串格式化操作符 2.2 用string的Template格式化字符串 3 字符串格式化:完整版 3.1 转换说明符 3.2 简单转换 3.3 字段宽度和精度 3.4 符号,对齐和 0 填充 4 字符串方法 4.1 find 4.2 join 4.3 lower 4.4 replace 4.5 split 4.6 strip 4.7 translate 1 基本字符串操作 说明:字符串也是序

Python基础教程笔记——第1章

1.8 函数 pow(x,y) x^y abs(x)          取数的绝对值 round(x)   会把浮点数四舍五入为最接近的整数 floor(x)     向下取整的函数,但是需要先import  math模块 1.9 模块 用import导入模块来扩展Python的功能 (1)import 模块    然后用法:模块.函数 (2)from 模块 import 函数     然后用法:函数 (3)使用变量来赋值,然后使用函数,,,如:foo=math.floor()   foo(12

Python基础教程笔记 第二章

本章的名字虽然叫列表和元组,但是本章讲的最多的是列表,元祖指讲了很少的一部分.因为元组和列表很多方面都是一样的. 列表和元组的区别:列表可以被修改,元祖不可以被修改. python包含的6种内建序列:列表.元组.字符串.Unicode字符串.buffer对象.xrange对象. 内建函数返回的是元组,因为元组是不可以被修改的. 列表的形式是[] ,元素之间通过逗号分隔. 序列(例如列表和元组)和映射(例如字典)是两类主要的容器.序列中的每个元素都有自己编号,而映射中的每个元素则有一个名字(也称为

Python基础教程笔记——第2章:列表和元组

python shell 里重复上一次的命令:Alt+p 2.3 列表:Python的苦力 (1)list函数 (2)列表赋值,不蹦蹦为一个元素不存在的位置赋值 (3)删除元素,del name[1] (4)分片赋值,name[2:]=list('ar') 列表方法:对象.方法(参数) (1)a.append(6)   在列表末尾添加新的对象 (2)a.count("dh")   统计元素在列表中出现的次数 (3)a.extend(b)   可以在列表的末尾一次性追加多个值 (4)a.

Python基础教程笔记 第一章

/  表示整除,当导入_future_模块中的version时,/ 表示正常的的除法, 此时可用//表示整除,不论数字是整型还是浮点型,都可以用//表示整除. ** 表示幂次方  例如 2**3   表示2的3次方  结果为8 ** 运算符的优先级比负号 - 的运算符优先级高,所以 -3**2 = -9    (-3)**2 = 9 Pow(3,2)函数也表示幂次方的计算,此函数表示3的2次方,结果为9 输入使用input函数,input(“please input a number:”)