Python面向对象进阶之python是动态语言

1. 动态语言的定义

动态编程语言是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用。它是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前常具有活力。例如JavaScript便是一个动态语言,除此之外如PHP 、 Ruby 、 Python 等也都属于动态语言,而 C 、 C++ 等语言则不属于动态语言。

2. 运行的过程中给对象绑定(添加)属性

Python面向对象进阶之python是动态语言

Python面向对象进阶之python是动态语言

"""运行的过程中给对象添加属性"""
class Person(object):
    def __init__(self,name=None,age=None):
        self.name=name
        self.age=age

P=Person('小明','24')
P.sex='male'
print(P.sex)#定义的类中没有sex这个属性,实际上就是动态给实例绑定属性

3. 运行的过程中给类绑定(添加)属性 

Python面向对象进阶之python是动态语言

"""运行过程中给类绑定属性"""
# P1=Person('小里','22')
# print(P1.sex)#尝试打印P1.sex,发现报错,P1没有这个属性!给P这个实例绑定的属性对P1这个实例不起作用!

"因此给所有的Person的实例绑定sex属性"
Person.sex=None#给类Person添加一个属性
P1=Person('xiaoli','22')
print(P1.sex)

4. 运行的过程中给类绑定(添加)方法 

 Python面向对象进阶之python是动态语言

import types

"""运行过程中给类绑定方法"""
class Person(object):
    num = 0
    def __init__(self,name=None,age=None):
        self.name=name
        self.age=age

    def eat(self):
        print('eat food')

#定义一个实例方法
def run(self,speed):
    print('%s在移动,速度是%d km/h'%(self.name,speed))

#定义一个类方法
@classmethod
def testClass(cls):
    cls.num=100

#定义一个静态方法
@staticmethod
def testStatic():
    print('---static method')

#创建一个实例对象
P=Person('老王',24)
#调用在class中的方法
P.eat()

#给这个对象添加实例方法
P.run=types.MethodType(run,P)
#调用实例方法
P.run(180)

#给Person类绑定类方法
Person.testClass=testClass
#调用类方法
print(Person.num)
Person.testClass()
print(Person.num)

#给Person类绑定静态方法
Person.testStatic=testStatic
#调用静态方法
Person.testStatic()

5. 运行的过程中删除属性、方法 

Python面向对象进阶之python是动态语言