介绍
这期内容当中小编将会给大家带来有关Python动态语言的特性有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强>一、动态语言的定义强>
动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。现在比较热门的动态语言有:Python, PHP, JavaScript, objective - C等,而C, c++等语言则不属于动态语言。
<强>二、运行的过程中给对象绑定(添加)属性强>
class 人(对象): ,,,def __init__(自我,name=没有,年龄=None): ,,,,,,,self.name=名字 ,,,,,,,self.age=年龄 时间=p 人(“小明“,“24“) 打印(p.name) 打印(p.a ge)
运行结果为:
小明 24
这里我们只定义了姓名和年龄两个属性,但是在类已经定义好了之后,我们仍然可以往里面添加属性,这就是动态语言的好处,动态的给实例绑定属性:
class 人(对象): ,,,def __init__(自我,name=没有,年龄=None): ,,,,,,,self.name=名字 ,,,,,,,self.age=年龄 时间=p 人(“小明“,“24“) 打印(p.name) 打印(p.a ge) #动态添加属性 p.sex =,“男”; 打印(p.sex)
运行结果为:
小明 24 男
<强>三、运行的过程中给类绑定(添加)属性强>
class 人(对象): ,,,def __init__(自我,name=没有,年龄=None): ,,,,,,,self.name=名字 ,,,,,,,self.age=年龄 时间=P1 人(“小明“,24) 打印(P1.sex)
运行结果为:
Traceback (most recent call 最后): File 才能“C: \ Se7eN_HOU \ \用户桌面\ test.py",, line 8日,拷贝& lt; module> ,,,印刷(P1.sex) AttributeError: & # 39;简历及# 39;,object has no attribute & # 39;性与# 39;
这是程序报错说,没人有性爱这个属性,我们可以通过给人动态绑定属性,解决问题。
class 人(对象): ,,,def __init__(自我,name=没有,年龄=None): ,,,,,,,self.name=名字 ,,,,,,,self.age=年龄 时间=P1 人(“小明“,24) #动态给类添加属性 Person.sex =,“男”; 打印(P1.sex)
这个时候在运行就不会出的错,而且会打印出P1.sex为男。
<强>四、运行的过程中给类绑定(添加)方法强>
class 人(对象): ,,,def __init__(自我,name=没有,年龄=None): ,,,,,,,self.name=名字 ,,,,,,,self.age=年龄 ,,,def 吃(自我): ,,,,,,,印刷(“正在吃东西“) 时间=P1 人(“小明“,24) P1.eat () P1.run ()
运行结果为:
正在吃东西 Traceback (most recent call 最后一个): File 才能“C: \ Se7eN_HOU \ \用户桌面\ test.py",, line 11日,拷贝& lt; module> ,,,P1.run () AttributeError: & # 39;简历及# 39;,object has no attribute & # 39;运行# 39;
说明:正在吃东西打印出来了,说明吃函数被执行,但是后面报错说没有运行这个属性,但是我想在类创建好了以后,在运行的时候动态的添加运行方法怎么办呢?
#动态添加方法需要导入类型模块 import 类型 class 人(对象): ,,,def __init__(自我,name=没有,年龄=None): ,,,,,,,self.name=名字 ,,,,,,,self.age=年龄 ,,,def 吃(自我): ,,,,,,,印刷(“正在吃东西“) #定义好需要动态添加的方法 def 运行(自我): ,,,print(“在跑步“) ,,,, 时间=P1 人(“小明“,24) #正常调用类里面的函数 P1.eat () #给对象动态绑定方法 时间=P1.run types.MethodType(运行,P1) #对象调用动态绑定的方法 P1.run ()
运行结果为:
正在吃东西 以前在跑步>打印出来“在跑步”说明运行方法被正常执行了
<强>动态绑定类方法和静态方法强>
#动态添加方法需要导入类型模块 import 类型 class 人(对象): ,,,def __init__(自我,name=没有,年龄=None): ,,,,,,,self.name=名字 ,,,,,,,self.age=年龄 ,,,def 吃(自我): ,,,,,,,印刷(“正在吃东西“) #定义好需要动态添加的实例方法 def 运行(自我): ,,,print(“在跑步“) #定义好需要动态添加的类方法 @classmethod def dynamicClassMethod (cls): ,,,print(“这是一个动态添加的类方法“) #定义好需要动态添加的静态方法 @staticmethod def dynamicStaticMethod (): ,,,print(“这是一个动态添加的静态方法“) ,,,, 时间=P1 人(“小明“,24) #正常调用类里面的函数 P1.eat () #给对象动态绑定方法 # MethodType(参数1,参数2) #参数1:是动态绑定哪个方法,只写方法名即可 #参数2:是把这个方法动态的绑定给谁 时间=P1.run types.MethodType(运行,P1) P1.run () #动态绑定类方法的使用 null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullPython动态语言的特性有哪些