python的动态性

动态语⾔:可以在运⾏的过程中,修改代码
静态语⾔:运行前必须先编,译编译时已经确定好代码,运⾏过程中不能修改

python是动态语⾔:它是⼀类在运⾏时可以改变其结构的语⾔:例如新的函数、对象、 甚⾄代码可以被引进,已有的函数可以被删除或是其他结构上的变化.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Person(object):
def __init__(self, newName, newAge):
self.name = newName
self.age = newAge
# __slots__ = ("name", "age")
# 为了达到限制的⽬的,Python允许在定义class的时候
# 定义⼀个特殊的 __slots__变量,来限制该class实例能添加的属性
@staticmethod
def test();
pass
@classmethod
def testclass(cls):
pass
laowang = Person("老王", 10000)
print(laowang.name)
print(laowang.age)
# 可以添加其它属性和方法,即使在类只没有定义
laowang.addr = "北京...."
print(laowang.addr)
# 给对象和类添加属性
laozhao = Person("老赵", 18)
#print(laozhao.addr)
Person.num = 100
print(laowang.num)
print(laozhao.num)
# 添加静态方法
Persion.test = test
Persion.testclass = testclass
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 添加方法
class Person(object):
def __init__(self, newName, newAge):
self.name = newName
self.age = newAge
def eat(self):
print("-----%s正在吃----"%self.name)
def run(self):
print("-----%s正在跑----"%self.name)
p1 = Person("p1", 10)
p1.eat()
p1.run = run
# p1.run()#虽然p1对象中 run属性已经指向了函数,但是这句代码还不正确
#因为run属性指向的函数 是后来添加的,p1.run()的时候,并没有把p1当做第
#1个参数,导致了第10行的函数调用的时候, 出现缺少参数的问题
import types
p1.run = types.MethodType(run, p1)
p1.run()
Share Comments