python的约束、反射
admin
2023-06-29 13:43:39
0次

  1.约束:子类中必须继承父类的方法,不然会报错。

  class Base(object):

  def send(self):

  raise NotImplementedError('子类中必须实现send方法')

  class Foo(Base):

  """如果不写send方法,会返回错误信息"""

  def send(self):

  print('234')

  obj = Foo()

  obj.send()

  2.反射(反射就是把字符串反射成内存对象)

  反射中四个重要的方法

  getattr 获取指定字符串名称的对象属性

  setattr 为对象设置一个对象

  hasattr 判断对象是否有对应的对象(字符串)

  delattr 删除指定属性

  #!/usr/bin/env python

  # -*- coding: utf-8 -*-

  # Author: rex.cheny

  # E-mail: rex.cheny@outlook.com

  class TestObj(object):

  def __init__(self, name, age):

  self.name = name

  self.age = age

  def displayName(self):

  print("displayName方法执行,打印姓名:", self.name)

  def AAA(self):

  print("I am AAA.")

  def main():

  to = TestObj("Tom", 23)

  # 查看 to 实例里面是否有 name 这个属性

  if hasattr(to, "name"):

  print("实例 to 中有 name 属性。")

  print(getattr(to, "name"))

  else:

  print("实例 to 中没有 name 属性。")

  if hasattr(to, "displayName"):

  print("实例 to 中有 displayName 属性。")

  getattr(to, "displayName")()

  else:

  print("实例 to 中没有 displayName 属性。")

  if hasattr(to, "AAA"):

  print("实例 to 中有 AAA 属性。")

  getattr(to, "AAA")()

  else:郑州妇科医院 http://www.zyfuke.com/

  print("实例 to 中没有 AAA 属性,将会设置。")

  setattr(to, "AAA", AAA) # 参数:实例、方法名称、具体方法 相当于 to.AAA = AAA 第一个AAA是函数在实例中的名称, 第二个AAA是把哪个函数放进去,两者只是恰好这里名称一样

  # to.AAA(to) # 这里一定要主动传递一个实例进去,因为它不会自动装配self

  getattr(to, "AAA")(to)

  if __name__ == '__main__':

  main()

  举个例子

  class TestObj(object):

  def __init__(self, name):

  self.name = name

  def displayname(self):

  print(self.name)

  def main():

  to = TestObj(name="Tom")

  cmd = input("输入:")

  if hasattr(to, cmd):

  pass

  else:

  setattr(to, cmd, displayname)

  func = getattr(to, cmd)

  func(to)

  if __name__ == '__main__':

  main()

  以字符串的形式使用模块的方法

  #!/usr/bin/env python

  # -*- coding: utf-8 -*-

  # Author: rex.cheny

  # E-mail: rex.cheny@outlook.com

  temp = "re" # 要引入的模块

  func = "compile" # 要使用的方法

  model = __import__(temp) # 导入模块

  function = getattr(model, func) # 找到模块中的属性

  def main():

  txt = "hj123uo"

  pattern = function(r"[0-9]+") # 这里执行funcation()就等于执行re.compile()函数

  print(model.search(pattern, txt).group())

  if __name__ == '__main__':

  main()


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...