当前位置: 移动技术网 > IT编程>脚本编程>Python > python__高级 : 动态添加 对象属性, 类属性, 对象实例方法, 类静态方法, 类方法

python__高级 : 动态添加 对象属性, 类属性, 对象实例方法, 类静态方法, 类方法

2018年05月19日  | 移动技术网IT编程  | 我要评论

蝙蝠侠前传2黑暗骑士在线观看,咱俩没戏19楼,电机修理

对象添加实例属性,可以直接这样  t.age = 18   ( 假设 t = Test() )  给类添加类属性 , 也可以直接这样  Test.age = 18

给对象添加实例方法,可以在类外面先定义一个函数 然后 用 types.MethodType() 方法 把 函数绑定到对象的一个属性上面:

class Test(object):

    def __init__(self, newName):
        self.name = newName

def printName(self):
    print('输出名字------%s----' %self.name)

t = Test('Jack')

t.printName = types.MethodType(printName, t)

t.printName()

>>>输出名字------Jack----

这个地方的 t.printName 其实并不是一个方法, 而是存储了 printName 函数的引用, types.MethodType() 的作用是把 函数的self 变成 t ,所以打印的是 t.name .

给类添加静态方法,也是先在外边定义一个静态方法,然后直接一个类属性指向这个静态方法就可以 :

class Test(object):

    def __init__(self, newName):
        self.name = newName

@staticmethod
def printName():
    print('输出名字------111----')

Test.printName = printName

Test.printName()

>>>输出名字------111----

因为静态方法一般不需要参数,所以直接一个类属性 Test.printName 指向这个静态方法就行.

同理,给类添加类方法和添加静态方法差不多:

class Test(object):

    a = 100

    def __init__(self, newName):
        self.name = newName

@classmethod
def printName(cls):
    print('输出名字------%s----' % cls.a)

Test.printName = printName

Test.printName()

>>>输出名字------100----

只不过 在调用类方法的时候会自动的把类的名字传递给后来添加上的类方法, 所以 cls.a 就是 Test.a

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网