最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

详解pyhon中方法、属性、迭代器

来源:懂视网 责编:小采 时间:2020-11-27 14:25:43
文档

详解pyhon中方法、属性、迭代器

详解pyhon中方法、属性、迭代器:这篇文章详解pyhon中方法、属性、迭代器构造方法:构造方法代表着类似于以前例子中使用过的那种名为init的初始化方法当一个对象被创建后,会立即调用构造方法>>> class FooBar: def __init__(self): self.somevar=42 >
推荐度:
导读详解pyhon中方法、属性、迭代器:这篇文章详解pyhon中方法、属性、迭代器构造方法:构造方法代表着类似于以前例子中使用过的那种名为init的初始化方法当一个对象被创建后,会立即调用构造方法>>> class FooBar: def __init__(self): self.somevar=42 >

这篇文章详解pyhon中方法、属性、迭代器

构造方法:

构造方法代表着类似于以前例子中使用过的那种名为init的初始化方法

当一个对象被创建后,会立即调用构造方法

>>> class FooBar:
 def __init__(self):
 self.somevar=42

 
>>> f=FooBar()
>>> f.somevar
>>> class fO
SyntaxError: invalid syntax
>>> class FooBar():
 def __init__(self,value=42):
 self.somevar=value

 
>>> f=FooBar('This is a constructor argument')
>>> f.somevar
'This is a constructor argument'

重写一般方法和特殊的构造方法

>>> class Bird:
 def __init__(self):
 self.hungry=True
 def eat(self):
 if self.hungry:
 print 'Aaaah...'
 self.hungry=False
 else:
 print 'No,thanks!'

 
>>> b=Bird()
>>> b.eat()
Aaaah...
>>> b.eat()
No,thanks!
>>> class SongBird(Bird):
 def __init__(self):
 Bird.__init__(self) #调用超类的构造方法
 self.sound='Squawk!'
 def sing(self):
 print self.sound

 
>>> sb=SongBird()
>>> sb.sing()
Squawk!
>>> sb.eat()
Aaaah...
>>> sb.eat()
No,thanks!

super函数

super(SongBird,self)

>>> __metaclass__=type
>>> class Bird:
 def __init__(self):
 self.hungry=True
 def eat(self):
 if self.hungry:
 print 'Aaaah...'
 self.hungry=False
 else:
 print 'No,thinks!'

 
>>> class SongBird(Bird):
 def __init__(self):
 super(SongBird,self).__init__()
 self.sound='Squawk!'
 def sing(self):
 print self.sound

 
>>> n=SongBird()
>>> n.sing()
Squawk!
>>> n.eat()
Aaaah...
>>> n.eat()
No,thinks!

属性

通过访问器定义的特性被称为属性

>>> class Rectangle:
 def __init__(self):
 self.width=0 #特性
 self.height=0 #特性
 def setSize(self,size): #通过访问器方法改变特性
 self.width,self.height=size
 def getSize(self): #通过访问器方法访问特性
 return self.width,self.height

 
>>> r=Rectangle()
>>> r.width=10
>>> r.height=5
>>> r.getSize()
(10, 5)
>>> r.setSize((150,100))
>>> r.width

property函数

>>> __metaclass__=type
>>> class Rectangle:
 def __init__(self):
 self.width=0
 self.height=0
 def setSize(self,size):
 self.width,self.height=size
 def getSize(self):
 return self.width,self.height
 size=property(getSize,setSize)

 
>>> r=Rectangle()
>>> r.width=10
>>> r.height=5
>>> r.size
(10, 5)
>>> r.size=150,100
>>> r.width

迭代器

迭代器就是具有next

>>> class Fibs:
 def __init__(self):
 self.a=0
 self.b=1
 def next(self):
 self.a,self.b=self.b,self.a+self.b
 return self.a
 def __iter__(self):
 return self

 
>>> fibs=Fibs()
>>> for f in fibs:
 if f>1000:
 print f
 break
>>> it=iter([1,2,3])
>>> it.next()
>>> it.next()
>>> class TestIterator:
 value=0
 def next(self):
 self.value+=1
 if self.value>10: raise StopIteration
 return self.value
 def __iter__(self):
 return self

 
>>> ti=TestIterator()
>>> list(ti)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

yield 生成器

任何包含yield语句的函数称为生成器。每次产生一个值(使用yield语句),函数就会被冻结,即函数停在那点等待被激活,函数被激活后从停止的那点开始执行

>>> nested=[[1,2],[3,4],[5]]
>>> def flatten(nested):
 for sublist in nested:
 for element in sublist:
 yield element

 
>>> for num in flatten(nested):
 print num
2
4

文档

详解pyhon中方法、属性、迭代器

详解pyhon中方法、属性、迭代器:这篇文章详解pyhon中方法、属性、迭代器构造方法:构造方法代表着类似于以前例子中使用过的那种名为init的初始化方法当一个对象被创建后,会立即调用构造方法>>> class FooBar: def __init__(self): self.somevar=42 >
推荐度:
标签: 方法 的方法 方式
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top