python的约束、反射

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

创新互联-专业网站定制、快速模板网站建设、高性价比龙安网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式龙安网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖龙安地区。费用合理售后完善,十余年实体公司更值得信赖。

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()

网页标题:python的约束、反射
当前URL:https://www.cdcxhl.com/article28/iecocp.html

成都网站建设公司_创新互联,为您提供全网营销推广网站内链网站排名微信小程序网站导航标签优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司