python
说Python是动态语言,是由于Python可以在代码运行中可以做更改,但是像C、Java之类的需要编译的语言,由于做过编译就不可以做修改了,所以是静态语言。但是像Python、PHP、Ruby之类的动态语言执行效率会不如静态语言快,毕竟中间有一层解释器。
示例代码如下:
#coding=utf-8
import types
class Person(object):
num = 100
pass
p1 = Person()
# 给对象传递属性
p1.name = 'xiaohua'
print(p1.name)
# 给类传递属性
Person.pname = 'human'
print(Person.pname)
print(p1.pname)
print('----------------------------')
def test1(self):
print('--------------self-test1')
def test2(cls):
print('--------------cls-test2')
print(cls.num)
@staticmethod
def test3():
print('--------------test3')
# 添加实例方法
p1.test1 = types.MethodType(test1,p1,Person)
# 添加类方法
Person.test2 = types.MethodType(test2,Person,type)
# 添加静态方法,这里不能使用types来创建,不然会报一个:没有参数却多传了一个参数的错误
Person.test3 = test3
p1.test1()
p1.test2()
p1.test3()
#del p1.test1
delattr(p1,test1)
p1.test1()
slots
由于python是个动态语言,有时候人们不想让运行的代码做修改,__slots__
就是起到了这个作用。
但是由于__solts__
是个私有属性,所以如果一个子类集成了这个父类,子类是可以随意增加属性的