zoukankan      html  css  js  c++  java
  • 绑定方法与非绑定方法,反射,内置方法

    类中定义函数分为绑定方法和非绑定方法两大类

    绑定方法的特殊之处就是绑定给谁就由谁来调用 谁来调用就会将谁当做第一个参数自动传入

    绑定方法也分为两种:

    1.绑定给对象的方法  在类中定义函数没有被任何装饰器修饰的情况下,默认就是绑定对象的

    2.绑定给类的方法  为类中定义函数添加一个装饰器classmethod 就是绑定类的

    非绑定方法就是一个普通函数 与类和对象都不绑定 类和对象都可以调用,但无论谁来调用都只是一个普通函数 没有自动传值效果

    非绑定方法就是为类中的定义函数添加一个装饰器staticmethod

    class Foo:
        def func1(self):
            print('func1',self)
        @classmethod
        def func2(cls):
            print('func2',cls)
    
        @staticmethod
        def func3(x):
            print('func3',x)
    
    obj =Foo()
    #绑定给对象的方法
    obj.func1()
    print(obj.func1)
    #绑定给类的方法
    Foo.func2()
    print(Foo.func2)
    #非绑定方法
    Foo.func3(1)
    obj.func3(1)
    例子

    反射是通过字符串来操作属性

    class People:
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
        def info(self):
            print('%s %s'%(self.name,self.age))
    
    obj = People('xia',20)
    
    print(hasattr(obj,'name'))
    
    print(getattr(obj,'name'))
    
    setattr(obj,'name','egon')
    print(obj.__dict__)
    
    delattr(obj,'name')
    print(hasattr(obj,'name'))
    print(getattr(obj,'name',None))
    View Code

    内置方法

    isinstance指判断是否是一个对象

    issubclass指判断是否是一个子类

    __str__是会在对象被打印时自动触发,然后将返回值返回给print功能进行打印

    __del__会在对象被删除时自动触发执行 用来在对象被删除前回收系统资源

  • 相关阅读:
    apache 访问出现403 Forbidden
    linux下用Apache一个IP多个域名建虚拟主机
    利用xargs 可以一次性卸载到位
    linux安装包地址备忘
    ii7安装php
    基于jQuery的对象切换插件:soChange 1.5 (点击下载)
    phpMyAdmin 缺少 mysqli 扩展。请检查 PHP 配置
    Android中的自动朗读(TTS)
    Android中的手势
    Android中的SQLiteOpenHelper类
  • 原文地址:https://www.cnblogs.com/xiamenghan/p/9853407.html
Copyright © 2011-2022 走看看