作者:追风剑情 发布于:2017-12-15 15:59 分类:Python

示例

  1. # -*- coding: cp936 -*-
  2. #类型检查
  3. x = (1,2,3)
  4. print isinstance(x, tuple) #是否为元组类型
  5. print isinstance(x, list) #是否为列表类型
  6. print isinstance(x, str) #是否为字符串类型
  7. print isinstance(x, dict) #是不为字典类型
  8. print isinstance(x, int) #是否为整型
  9. print isinstance(x, float) #是否为浮点型
  10.  
  11. #count函数: 统计字符出现的个数
  12. print 'abca'.count('a')
  13. print [1,2,'a'].count('a')
  14.  
  15. from random import choice
  16. x = choice(['Hello,world!', [1,2,'e',4]]) #choice方法:随机从列表中选择1项
  17. print x.count('e');
  18.  
  19. #定义一个类
  20. #类中定义的变量在Python中称为特性
  21. __metaclass__ = type # 确定使用新式类
  22.  
  23. class Person:
  24. def setName(self, name):
  25. self.name = name
  26.  
  27. def getName(self):
  28. return self.name
  29.  
  30. def greet(self):
  31. print "Hello, world! I'm %s." % self.name
  32.  
  33. print '调用类'
  34. foo = Person()
  35. bar = Person()
  36. foo.setName('Luke Skywalker')
  37. bar.setName('Anakin Skywalker')
  38. foo.greet()
  39. bar.greet()
  40. #或者这样调用
  41. Person.greet(foo)
  42. Person.greet(bar)
  43. print '访问特性'
  44. print foo.name
  45. bar.name = 'Yoda'
  46. bar.greet()
  47.  
  48. print '将特性绑定到普通函数上'
  49. class Class:
  50. def method(self):
  51. print 'I have a self!'
  52.  
  53. def function():
  54. print "I don't'..."
  55.  
  56. instance = Class()
  57. instance.method()
  58. instance.method = function
  59. instance.method()
  60.  
  61. class Bird:
  62. song = 'Squaawk!'
  63. def sing(self):
  64. print self.song
  65.  
  66. bird = Bird()
  67. bird.sing()
  68. birdsong = bird.sing
  69. birdsong()
  70.  
  71. print '特性私有化(外部不能访问)'
  72. #在它的名字前面加上双下划线即可
  73. #前面带星号的名字都不会被带星号的import语句(from module import *)导入
  74. class Secretive:
  75.  
  76. def __inaccessible(self):#外部访问此方法会报错
  77. print "Bet you can't see me..."
  78.  
  79. def accessible(self):
  80. print "The secret message is:"
  81. self.__inaccessible()
  82.  
  83.  
  84. s = Secretive()
  85. #s.__inaccessible() #引发报错
  86. s.accessible()
  87.  
  88. class C:
  89. print 'Class C being defined...'#类的作用域内也可以写普通代码语句
  90.  
  91.  
  92. print '类的命名空间'
  93. class MemberCounter:
  94. members = 0 #此变量的作用域为类
  95. def init(self):
  96. MemberCounter.members += 1 #类变量加1
  97.  
  98.  
  99. m1 = MemberCounter()
  100. m1.init()
  101. print MemberCounter.members
  102. m2 = MemberCounter()
  103. m2.init()
  104. print MemberCounter.members
  105. print m1.members
  106. print m2.members
  107.  
  108. print '重绑实例特性' #只影响单个实例
  109. m1.members = 'Two'
  110. print m1.members
  111. print m2.members
  112.  
  113. print '指定超类'
  114. class Filter:
  115. def init(self):
  116. self.blocked = []
  117. def filter(self, sequence):
  118. return [x for x in sequence if x not in self.blocked]
  119.  
  120. class SPAMFilter(Filter): #Filter是SPAMFilter的父类
  121. def init(self): #重写Filter超类中的init方法
  122. self.blocked = ['SPAM']
  123.  
  124. s = SPAMFilter()
  125. s.init()
  126. print s.filter(['SPAM', 'SPAM', 'eggs', 'bacon'])
  127.  
  128.  
  129. #判断一个类是否为另一个类的子类
  130. print 'issubclass函数'
  131. print issubclass(SPAMFilter, Filter)
  132. print issubclass(Filter, SPAMFilter)
  133.  
  134. print '查看已知类的基类'
  135. print SPAMFilter.__bases__
  136. print Filter.__bases__
  137.  
  138. #检查一个对象是否为一个类的实例
  139. print 'isinstance函数'
  140. s = SPAMFilter()
  141. print isinstance(s, SPAMFilter)
  142. print isinstance(s, Filter)
  143. print isinstance(s, str)
  144.  
  145. print '查看已知对象所属类'
  146. print s.__class__
  147. #如果使用_metaclass__=type或从object继承的方式来定义新式类,那么可以使用type(s)
  148. #查看实例所属的类。
  149. print type(s)
  150.  
  151. print '多个超类'
  152. class Calculator:
  153. def calculate(self, expression):
  154. self.value = eval(expression)
  155.  
  156. class Talker:
  157. def talk(self):
  158. print 'Hi, my value is', self.value
  159.  
  160. #注意:先继承的类会覆盖后继承类的同名方法
  161. #如果Calculator类中也有talk方法,Talker中的talk方法会被覆盖。
  162. class TalkingCalculator(Calculator, Talker):#多重继承
  163. pass #这个类什么也不做
  164.  
  165. tc = TalkingCalculator()
  166. tc.calculate('1+2*3')
  167. tc.talk()
  168.  
  169. print '检查特性是否存在'
  170. print hasattr(tc, 'talk')
  171. print hasattr(tc, 'fnord')
  172.  
  173. print '检查特性是否可调用'
  174. #callable函数在Python3.0中已不再可用,可以使用hasattr(x.'__call__')来代替。
  175. print callable(getattr(tc, 'talk', None))
  176. print callable(getattr(tc, 'fnord', None))
  177.  
  178. print '设置对象特性'
  179. setattr(tc, 'name', 'Mr.Gumby')
  180. print tc.name
  181.  
  182. print '查看对象内所有存储的值'
  183. print tc.__dict__
  184.  
  185. #inspect模块可查看对象由什么组成(编写对象浏览器编程有用)

运行测试

11111.png

标签: Python

« 异常 | 函数»
Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号