python实例

python学习笔记之带下划线的特殊方法总结

▼魔方 西西 提交于 2020-03-09 08:40:11
Python 的对象天生拥有一些神奇的方法,它们总被双下划线所包围,他们是面向对象的 Python 的一切。 他们是可以给你的类增加特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生的。 Python 的这些方法非常强大,然而随之而来的则是责任。了解正确的方法去使用非常重要! 方法名 含义 基本的方法 __new__方法 1.__new__是在一个对象实例化的时候所调用的第一个方法 2.它的第一个参数是这个类,其他的参数是用来直接传递给 __init__方法 3.__new__决定是否要使用该 __init__方法,因为 __new__可以调用其他类的构造方法或者直接返回别的实例对象来作为本类的实例,如果 __new__没有返回实例对象,则 __init__不会被调用 4. __new__主要是用于继承一个不可变的类型比如一个 tuple 或者 string __init__方法 构造器,当一个实例被创建的时候调用的初始化方法 __del__方法 析构器,当一个实例被销毁的时候调用的方法 __call__方法 允许一个类的实例像函数一样被调用:x(a, b) 调用 x.__call__方法(a, b) __len__方法 定义当被 len() 调用时的行为 __repr_

python 2 类与对象

▼魔方 西西 提交于 2020-03-09 04:18:06
1、类与对象的概念 类即类别、种类,是面向对象设计最重要的概念,从一小节我们得知对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体。 那么问题来了,先有的一个个具体存在的对象(比如一个具体存在的人),还是先有的人类这个概念,这个问题需要分两种情况去看 (1)在现实世界中:肯定是先有对象,再有类 世界上肯定是先出现各种各样的实际存在的物体,然后随着人类文明的发展,人类站在不同的角度总结出了不同的种类,比如 人类、动物类、植物类等概念。也就说,对象是具体的存在,而类仅仅只是一个概念,并不真实存在,比如你无法告诉我人类 具体指的是哪一个人。 (2)在程序中:务必保证先定义类,后产生对象 这与函数的使用是类似的:先定义函数,后调用函数,类也是一样的 :在程序中需要先定义类,后调用类 。不一样的是:调用 函数会执行函数体代码返回的是函数体执行的结果,而 调用类会产生对象,返回的是对象 1>把一类事物的静态属性和动态可以执行的操作组合在一起所得到的这个概念就是类 2>类的一个个体就是对象,对象是具体的,实实在在的事物 3>对象是特征与技能的结合体,其中特征和技能分别对应对象的数据属性和方法属性 4>对象(实例)本身只有数据属性,但是python的class机制会将类的函数绑定到对象上,称为对象的方法,或者叫绑定方法,绑定方法唯一绑定一个对象,同一个类的方法绑定到不同的对象上

Python new方法与单例模式

左心房为你撑大大i 提交于 2020-03-09 00:53:19
在网上看了很多关于 __new__() 魔法方法的教程,毫无疑问大部分都是单例模式相关,确实如此,利用 __new__() 魔法方法的特性,在 Python 中很容易实现单例模式。 在面向对象编程的语言中,很多语言都有一个构造函数,例如 Java 和 C++ ,在 Python中 也存在一个构造函数 __init__() ,不过在 python 中叫做魔法方法,在类实例化的时候初始化类成员变量。运行下面的程序将会打印 init 字符串。 class test : def __init__ ( self ) : print ( 'init' ) if __name__ == '__main__' : a = test ( ) #程序输出 #init 刚开始学习 Python 的时候我觉得在类实例化的过程中第一运行的就是 __init__() 方法,后来发现还有一个比它先运行的魔法方法 __new__() 方法,运行下面的代码可以看到确实如此。 class test : def __init__ ( self ) : print ( 'init' ) def __new__ ( cls , * args , ** kwargs ) : print ( 'new' ) if __name__ == '__main__' : a = test ( ) #程序输出 #new 但是。。。

Python流程控制-循环语句for、while

佐手、 提交于 2020-03-08 22:19:13
循环结构 什么是循环结构 循环结构就是重复执行某段代码块 为什么要用循环结构 人类某些时候需要重复做某件事情 所以程序中必须有相应的机制来控制计算机具备人的这种循环做事的能力 While循环 while 循环:适用于循环次数未知的场景,要有退出条件 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为: while 判断条件: 执行语句…… 执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空( null)的值均为true。 当判断条件假 false时,循环结束。 执行流程图如下: //实例 #!/usr/bin/python count = 0 while (count < 9): print 'The count is:', count count = count + 1 print "Good bye!" 以上代码执行输出结果: The count is: 0 The count is: 1 The count is: 2 The count is: 3 The count is: 4 The count is: 5 The count is: 6 The count is: 7 The count is: 8 Good bye! continue 和 break 用法

Python学习笔记--类class

我是研究僧i 提交于 2020-03-08 20:22:50
面向对象最重要的概念就是类(Class)和实例(Instance),类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。下面的实例代码说明了类的一些基本的知识点。 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Date : 2020-03-08 4 # @Author : Flyinghappy (671474@qq.com) 5 # @Link : https://www.cnblogs.com/flyinghappy/ 6 # @Version : $Id$ 7 import json 8 import os 9 10 class Person: 11 '''类里面定义的函数,第一个参数默认是self''' 12 num=0#类属性 13 def __init__(self,name='',age=20):#特殊方法,在创建类实例的时候把name,age等属性绑定到实例。 14 self.__name=name#类实例变量,前面'__'双下划线限制外部访问 15 self.age=age#类实例变量 16 self.talking_note=[]#类实例变量 17 def talk(self,talk_something):#类方法 18 self

写给小白的Python之004:数据类型之字符串

让人想犯罪 __ 提交于 2020-03-08 07:51:00
导读: 1.字符串 2.转义字符 3.字符串的运算 4.字符串的索引 5.字符串的切片 6.字符串的常用操作 字符串是Python中很重要的数据类型。 一、字符串 1. 如何表示字符串 单引号、双引号、三引号。 >>> 'hello' 'hello' >>> "hello" 'hello' >>>''' Tom said:"I'm Tom" ''' 'Tom said:"I'm Tom" ' 2. 1和 '1' 是有区别的 >>> type(1) # 1 <class 'int'> >>> type('1') # '1' <class 'str'> 注:type()可查看数据的类型。int表示整型。str表示字符串。 3. 引号的包裹问题 相同的引号不能互相包裹,只能是不同引号间包裹。 >>> "let's go" "let's go" >>> 'let's go' File "<stdin>", line 1 'let's go' ^ SyntaxError: invalid syntax >>> 'let"s go' 'let"s go' 可以使用转义字符:不推荐使用 >>> 'let\'s go' "let's go" 4. 代码换行 Python的IDLE中推荐一行输入79个字符,那怎样使代码换行呢? >>> "hello world hello world hello

python学习笔记——面向对象

你说的曾经没有我的故事 提交于 2020-03-08 07:50:41
1.访问限制 练习1 class Student(object): def __init__(self, name, gender): self.__name = name self.__gender = gender def get_gender(self): return self.__gender print('%s' %self.__gender) def set_gender(self,gender): if gender == 'male' or gender == 'female': self.__gender = gender else: raise ValueError('Please set a correct gender!') bart = Student('Bart', 'male') print(bart.get_gender()) bart.set_gender('female') print(bart.get_gender()) ( 题外话 )python 里的与或非: 一般格式为:a & b a | b a and b a or b 如果a,b是数值变量, 则&, |表示位运算, and,or则依据是否非0来决定输出 例如: 1 & 2 # 输出为 0, 1 | 2 # 输出为3 (# 1&2,2在二进制里面是10,1在二进制中是01

DAY2-Python学习笔记

て烟熏妆下的殇ゞ 提交于 2020-03-08 03:36:35
1.迭代器: 可以直接作用于 for 循环的对象 统称 为 可迭代对象 : Iterable ,使用 isinstance() 判断一个对象是否是 Iterable 对象: >>> from collections import Iterable >>> isinstance([], Iterable) True >>> isinstance({}, Iterable) True >>> isinstance('abc', Iterable) True >>> isinstance((x for x in range(10)), Iterable) True >>> isinstance(100, Iterable) False 可以被 next() 函数调用并 不断返回 下一个值的对象称为 迭代器 : Iterator ,使用 isinstance() 判断一个对象是否是 Iterator 对象: >>> from collections import Iterator >>> isinstance((x for x in range(10)), Iterator) True >>> isinstance([], Iterator) False >>> isinstance({}, Iterator) False >>> isinstance('abc', Iterator)

学习10:Python重要知识

痴心易碎 提交于 2020-03-08 03:21:02
Python易忽略知识 (1)print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="" : (2)isinstance 和 type 的区别在于:type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型。这么理解,父类:动物;子类:猫。isinstance()认为猫是动物,type()认为猫就是猫不是动物。 (3)数值的除法包含两个运算符: / 返回一个浮点数, // 返回一个整数。 (4)Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。 (5)迭代器与生成器。 迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法: iter() 和 next() 。把一个类作为一个迭代器使用需要在类中实现两个方法 iter () 与 next () 。 class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next

元类metaclass

依然范特西╮ 提交于 2020-03-08 03:09:52
一 前言 二 什么是元类 三 class关键字创建类的流程分析 五 自定义元类控制类OldboyTeacher的创建 六 自定义元类控制类OldboyTeacher的调用 六 再看属性查找 七 练习题 一 前言 元类属于python面向对象编程的深层魔法,99%的人都不得要领,一些自以为搞明白元类的人其实也只是自圆其说、点到为止,从对元类的控制上来看就破绽百出、逻辑混乱,今天我就来带大家来深度了解python元类的来龙去脉。 笔者深入浅出的背后是对技术一日复一日的执念,希望可以大家可以尊重原创,为大家能因此文而解开对元类所有的疑惑而感到开心!!! 二 什么是元类 一切源自于一句话:python中一切皆为对象。让我们先定义一个类,然后逐步分析 class OldboyTeacher(object): school='oldboy' def __init__(self,name,age): self.name=name self.age=age def say(self): print('%s says welcome to the oldboy to learn Python' %self.name) 所有的对象都是实例化或者说调用类而得到的(调用类的过程称为类的实例化),比如对象t1是调用类OldboyTeacher得到的 t1=OldboyTeacher('egon',18)