程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

python面试大全(3)

python前言(0)

标签  

python面试(2)

python(0)

日期归档  

python(day7)

发布于2019-08-22 17:51     阅读(535)     评论(0)     点赞(30)     收藏(4)


构造与析构

魔法方法总是被双下划线包围,如__init__,是面向对象的python的一切,能够在适当的时候被自动调用

  1. __init __(self)
  2. __new __(cls[,…])
  3. __del __(self)
    前两个为对象的构造器,第三个为对象的析构器
    -
    构造方法包括创建对象和初始化对象,先执行 __new__方法,再执行__init__方法
    -
    __new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,给__init__这个实例设置一个参数
    -
    __init__方法的返回值一定是None

工厂函数

工厂函数就是类对象

python魔法方法通过重写,可以自定义任何对象间的算术运算

__ add__(self,other) 定义加法的行为:+
__ sub__(self,other) 定义减法的行为:-
__ mul__(self,other) 定义乘法的行为:*
__ truediv__(self,other) 定义真除法的行为:/
__ floordiv__(self,other) 定义整数除法的行为://
__ mod__(self,other) 定义取模算法的行为:%
__ divmod__(self,other) 定义当被 divmod() 调用时的行为,divmod(a, b)返回一个元组:(a//b, a%b)
__ pow__(self,other[,modulo]) 定义当被 power() 调用或 ** 运算时的行为
__ Ishift__(self,other) 定义按位左移位的行为:<<
__ rshift__(self, other) 定义按位右移位的行为:>>
__ and__(self, other) 定义按位与操作的行为:&
__ xor__(self, other) 定义按位异或操作的行为:^
__ or__(self, other) 定义按位或操作的行为:

在继承的类中调用基类的方法?

使用 super() 这个 BIF 函数。

-

time 模块详解(时间获取和转换)

time 模块详解(时间获取和转换)

-时间元组

在这里插入图片描述

四个魔法方法(属性访问)

  1. _getattr _(self, name)
    定义当用户试图获取一个不存在的属性时的行为
  2. _ getattribut _(self, name)
    定义当该类的属性被访问的行为
  3. _ setattr _(self, name,value)
    定义一个当属性被设置的行为
  4. _ deltattr _(self, name)
    定义当一个属性被删除时的行为

-

描述符

将某种特殊类型的类的实例指派给另一个类的属性
(至少实现以下至少一个)

  1. _ get _(self, instance,owner)
    用于访问属性,它返回属性的值
  2. _ set _(self, instance,value)
    将在属性分配操作中调用,,不返回任何内容
  3. _ delete _(self, instance)
    控制删除操作,不返回任何内容

-

协议

与其他编程语言中的接口很相似,它规定你哪些方法必须要定义。
在python中,协议更像是一种指南

容器类型的协议

  • 如果希望定制的容器是不可变
    只需要定义__len__()和__getitem__()方法
  • 如果是可变,除了__len__()和__getitem__()方法,还需要定义__setitem__()和__delitem__()两个方法

容器类型

  • __ len__(self)
    定义当被len()调用时的行为(返回容器中元素的个数)
  • __ getitem__(self,key)
    定义获取容器中指定元素的行为,相当于self[key]
  • __ setitem__(self,key,value)
    定义设置容器中指定元素的行为,相当于self[key] = value
  • __ delitem__(self,key)
    定义删除容器中的元素的行为
  • __ reversed__(self)
    定义当被reversed()调用时的行为
  • __ iter__(self)
    定义迭代容器中的元素的行为
  • __ contains__(self,item)
    定义当使用成员测试运算符(in 或 not in)时的行为

python基于序列的三大容器类指:列表(List)、元组(Tuple)、字符串(String)

迭代器

python提供的两个BIF

  1. iter()
    __ iter__()
    返回迭代器本身
  2. next()
    __ next__()
    决定了迭代器的规则

-
利用迭代器计算斐波那契数列

class Fibs:
	def __init__(self,n=10):
		self.a = a
		self.b = b
		self.n = n
	def __iter__(self):
		return self
	def __next__(self):
		self.a,self.b = self.b,self.a+self.b
		if self.a > self.n:
			raise StopIteration
		return self.a								
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

运行结果:

>>>fibs = Fibs()
>>>for each in fibs:	
	print(each)
1
1
2
3
5
8
>>>fibs = Fibs(20)
>>>for each in fibs:
	print(each)
1
1
2
3
5
8
13		
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19


所属网站分类: 技术文章 > 博客

作者:骷髅无悔

链接:https://www.pythonheidong.com/blog/article/53319/2498382b912caeaaf8a8/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)