''' python是动态语言,动态类型语言, ,所以Python运行时可以改变自身结构(添加属性1添加对象属性 对象名,属性名=值 setattr(对象名,属性,值) ,添加方法,删除方法) 也是强类型语言(1 变量的类型在运行之后,可以任意变量,不需要强制转换 2 变量的类型运时决定) 动态添加/删除属性和方法 接下来介绍Python如何动态添加属性和方法 ''' class Person(): def __int__(self,name,age): self.name = name self.age = age p1 = Person('学生1',18) #动态添加属性 # 1,添加对象属性 p1.address = '北京' #为对象添加了一个名字为gender的属性,存储的值为'男' setattr(p1,'gender',男) print('姓名:%s 年龄:%d 地址为;%s'%(p1.name,p1.age,p1.address)) print('姓名:%s 年龄:%d 地址为;%s 性别:%s'%(p1.name,p1.age,p1.address,p1.gender)) print('姓名:%s 年龄:%d 地址为;%s 性别:%s'%(p1.name,p1.age,p1.address,setattr(p1,'gender'))) p2 = Person('学生2',20) # print(p2.gender) # 2 添加类属性 person.CLS_ID = 110 print(p1.CLS_ID) print(p2.CLS_ID)
老师我能不能把偏函数理解成直接给 某个方法加上一个固定的默认值,然后生成一个新的方法
import re pattern = r'.*er\B' s = '123,oerp' v = re.match(pattern,s) print(v)
我明明要的123.oerp,但是这样写p就不见了
老师,我用带yield的函数做生成器一运行就出问题,这是为什么呢?
如果添加了初始化函数并且里面传入了除了self之外的参数那下面调用类方法时需不需要给参数赋值
# coding=utf-8 """ 闭包的特殊用途: 1。可以在不修改现有功能的源码的前提下,增加新的功能 日志功能(统计访问事件,访问功能,写到日志文件中),权限验证(验证当前中户是否为会员) 开闭原则: 开放:添加功能 关闭:修改源码 """ # 定义一个记录日志的函数:将访问时间以及访问的函数名写入达到文件中(log.txt) import time def writeLog(func): try: file = open('log.txt','a',encoding='utf-8') # 写入相关数据信息(访问函数名,访问的时间) file.write(func.__name__) file.write('\t') # 写入访问时间 file.write(time.asctime()) file.write('\n') except Exception as e: print(e.args) finally: # 关闭文件 file.close() # 闭包 def funcOut(func): def funcIn(): # 新增功能 writeLog(func) func() return funcIn def func1(): writeLog(func1) print("我是功能一") def func2(): writeLog(func2) print("我是功能二") func1 = funcOut(func1) func2 = funcOut(func2) func1() func2()
老师,我不明白等号前的func1和func2 是何时如何被调用的,
import re text = r"[1,2,3,4,5,6,7]{1,5}\bqq.com" v = re.match(text, "1234,qq.com") print(v)
老师您好,请问为什么我输出1234,qq.com没错,但是输出1234 qq.com就匹配不上了啊?空格不也应该可以分开单词吗?
老师,这个nonlocal语句是啥意思呢
def inFunc2(func): print("日志记录...") func() def fun1(): print("使用功能1") def fun2(): print("使用功能2") inFunc2(fun1) inFunc2(fun2)
既然要修改源码功能,那这种方案不是也可行吗虽然了解了通过闭包的方式,可以在保护函数内部变量的情况下,通过inner函数修改变量(如计数器)。但还是不清楚具体实践中的应用场景。
def outfunc(func): def infunc(): func() print("日志记录") return infunc def func1(): print("use func1") func1 = outfunc(func1) print(id(func1)) func1() print(id(func1))
func1=outfunc(func1)是把infunc函数传给了了func1,不管如何都是先处理infunc函数再处理func1函数,那为什么调换infunc函数里面的print方法和func方法,会导致输出日志记录和use func1的顺序不同,不应该都是日志记录在前use func1在后吗
我调不出来
老师,我想知道这个代码是怎么运行的,我手动计算不出这个答案,好像我对循环理解方式有错误。
定义的custom_sorted只有两个参数, 下边传了stu1,stu2,stu3,三个参数是怎么比较的?
# coding = utf-8 def test(): print("start") i = 0 while i < 3: yield i print(f'i:{i}') i += 1 print('end') return 'done' if __name__ == '__main__': a = test() print(a) a.__next__() a.__next__() a.__next__()
这个mypy模块下载到哪儿呢?是下载到c盘1里还是就下载到我的python程序的文件夹里就可以
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2026百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637