python进阶:动态语言

python是动态语言

一.动态语言的定义

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

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

class Person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
p=Person("小七","17")
print(p.name)
print(p.age)
p.sex="male"#给类绑定属性
print(p.sex)

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

class Person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
p=Person("小七","17")
Person.sex="female"
print(p.name)
print(p.age)
print(p.sex)

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

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()

五.运行的过程中删除属性,方法

删除的方法:

  1. del 对象.属性名
  2. delattr(对象, "属性名")

六.__slots__

动态语言:可以在运行的过程中,修改代码

静态语言:编译时已经确定好代码,运行过程中不能修改

Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性

class Person(object):
    __slots__ = ("name","age")
p=Person()
p.name="小七"
p.age=20
#p.sex="male"...会报错
  • 使用__slots__要注意,__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的

猜你喜欢

转载自www.cnblogs.com/python-road/p/10494820.html