zoukankan      html  css  js  c++  java
  • Python基础之动态添加属性,方法,动态类,静态类

    ## 动态添加属性

    class Person:
    def __init__(self,name):
    self.name = name

    # 1.通过对象.属性名称来操作
    p = Person('KTModel')
    p.address = '深圳'
    print(p.address)

    # 2.通过 setattr(对象,属性名称,这个属性名的值)方法
    if not hasattr(p,"phone"):
    setattr(p,"phone","187xxx")
    print(p.phone)

    ## 动态添加实例方法: 使用types.ModuleType
    import types

    class Father(object):
    def __init__(self,name):
    self.name = name

    def son(self):
    print('我是{}的son'.format(self.name))

    fa = Father('Father')
    fa.son = types.MethodType(son,fa)
    fa.son()

    ## 动态添加动态类:

    class Apple(object):
    country = 'China'
    def __init__(self,name):
    self.name = name

    @classmethod
    def run(cls):
    print('Apple生产地是属于哪里:{}'.format(cls.country))

    Apple.run = run
    Apple.run()


    ## 动态添加静态类:

    class Origin(object):
    country = 'China'
    def __init__(self,name):
    self.name = name

    @staticmethod
    def run():
    print('Origin生产地是属于哪里在中国')

    Origin.run = run
    Origin.run()

    # 动态删除属性和方法:
    # 1. del 对象.属性名
    # 2. delattr(对象,"属性名")

    # __slots__魔术变量:
    # 有时候我们想指定某个类的对象,只能使用我指定的这些属性,不能随便添加其他的属性,那么这时候就可以使用__slots__魔术变量。
    # 这个魔术变量是一个列表或者一个元组,里面存放属性的名字,以后在对象外面,就只能添加这个魔术变量中指定的属性,不能添加其他属性。
    # 示例代码如下:

    class Mother(object):
    __slots__ = ("name","age","address")
    def __init__(self,name):
    self.name = name

    mo = Mother('Teacher')
    mo.Hua = '666'
    print(mo.Hua) # 报错
  • 相关阅读:
    移动端适配方案
    js基础知识复习
    js单线程的本质-------Event Loop
    第13课 字典
    第12课 习题讲解
    第11课 循环嵌套和算法
    第10课 文件的读写
    第9课 循环语句与注释
    第8课 对象的方法
    第7课 初识函数
  • 原文地址:https://www.cnblogs.com/Teachertao/p/13966990.html
Copyright © 2011-2022 走看看