'''
绑定方法
类中定义函数分为了两大类:
1. 绑定方法
特殊之处: 绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数自动传入
如何用:
绑定给对象的方法: 在类中定义函数没有被任何装饰器修饰的情况下,默认就是绑定对象的
绑定给类的方法: 为类中定义函数添加一个装饰器classmethod,就是绑定类的 2. 非绑定方法
特殊之处: 非绑定方法就是一个普通函数,既不与类绑定又不与对象绑定,
意味着类与对象都可以调用,但是无论谁来调用都是一个普通函数,没有自动传值效果
如何用:
非绑定方法: 为类中定义函数添加一个装饰器staticmethod,就是非绑定方法 三种方法使用:关键是看函数体的代码具体使用情况
import uuid
print(uuid.uuid4()) #一.绑定给对象的方法
# 绑定给对象的,应该由对象来调,
# obj.func1()
# print(obj)
# 绑定给对象的方法,类也可以调用,但是类调用就是一个普通函数,没有自动传值的效果
# print(obj.func1)
# print(Foo.func1)
# Foo.func1(obj) #二.绑定给类的方法
# 绑定给类的,应该由类来调,(如用对象来调用,自动传的还是类)
# print(Foo.func2)
# print(obj.func2)
# Foo.func2()
# obj.func2() #三.非绑定方法
# print(obj.func3)
# print(Foo.func3)
# obj.func3(1,2)
# Foo.func3(1,3)
'''
'''
# class Foo:
# def func1(self):
# print('func1',self)
#
# @classmethod
# def func2(cls):
# print('func2',cls)
#
# @staticmethod
# def func3(x,y):
# print('func3',x,y)
#
# obj=Foo()
# ==========================
# import settings
#
# class MySQL:
# def __init__(self,ip,port):
# self.id=self.create_id()
# self.ip=ip
# self.port=port
#
# def tell_info(self):
# print('<%s:%s:%s>' % (self.id,self.ip, self.port))
#
# @classmethod
# def from_conf(cls):
# return cls(settings.IP, settings.PORT)
#
# @staticmethod
# def create_id():
# import uuid
# return uuid.uuid4() # obj=MySQL('1.1.1.1',3306)
# obj1=MySQL('1.1.1.2',3406)
# obj.tell_info()
# obj1.tell_info() # obj2=MySQL.from_conf()
# obj2.tell_info() ''' '''
反射
通过字符串的形式操作对象相关的属性。
python中的一切事物都是对象(都可以使用反射) 总之反射的好处就是,
可以事先定义好接口,接口只有在被完成后才会真正执行,这实现了即插即用,
这其实是一种‘后期绑定’,什么意思?
即你可以事先把主要的逻辑写好(只定义接口),然后后期再去实现接口的功能 四个可以实现自省的函数
下列方法适用于类和对象(一切皆对象,类本身也是一个对象)
#hasattr 判断属性或功能是否存在
# print(hasattr(obj,'name')) #obj.name
# print(hasattr(obj,'tell_info')) #obj.tell_info #getattr 查询属性,None的位置是填默认值
# res=getattr(obj,'name') #res=obj.name
# res=getattr(obj,'xxx',None) #setattr 更改,新增
# setattr(obj,'age',38)
# setattr(obj,'sex','male') #delattr 删除
# delattr(obj,'name')
'''
'''
# class Foo:
# def __init__(self,name,age):
# self.name=name
# self.age=age
#
# def tell_info(self):
# print('%s:%s' %(self.name,self.age))
#
# obj=Foo('egon练习',18) #hasattr
# print(hasattr(obj,'name')) #obj.name
# print(hasattr(obj,'tell_info')) #obj.tell_info #getattr
# res=getattr(obj,'name') #res=obj.name
# print(res)
# res=getattr(obj,'xxx',None)
# print(res) #setattr
# setattr(obj,'age',38)
# setattr(obj,'sex','male')
# print(obj.__dict__)
# print(obj.sex) #delattr
# delattr(obj,'name')
# if hasattr(obj,'xxxxe'):
# delattr(obj,'xxxxe')
# print(obj.__dict__)
''' # isinstance(obj,cls)检查是否obj是否是类 cls 的对象
# issubclass(sub, super)判断是否是子类(检查sub类是否是 super 类的派生类)
'''
# isinstance(obj,cls)检查是否obj是否是类 cls 的对象
# print(isinstance([],list)) #type([]) is list
# class Foo:
# pass
# obj=Foo()
# print(isinstance(obj,Foo)) # issubclass(sub, super)判断是否是子类(检查sub类是否是 super 类的派生类)
# class Foo:
# pass
#
# class Bar(Foo):
# pass
# print(issubclass(Bar,Foo))
''' # __str__: 会在对象被打印时自动触发,然后将返回值返回给print功能进行打印
# l=list([1,2,3])
# print(l) #(同理,定制对象的显示效果,常用!!!) # __del__: 会在对象被删除时自动触发执行,用来在对象被删除前回收系统资源
# 常用语回收 文件的关闭
'''
# __str__: 会在对象被打印时自动触发,然后将返回值返回给print功能进行打印
# class People:
# def __init__(self,name,age):
# self.name=name
# self.age=age
#
# def __str__(self):
# return '<%s:%s>' %(self.name,self.age)
#
# peo=People('egon练习',18)
# print(peo) #print(peo.__str__())
#
# l=list([1,2,3])
# print(l) # __del__: 会在对象被删除时自动触发执行,用来在对象被删除前回收系统资源
# class Foo:
# def __del__(self):
# print('===>')
#
# obj=Foo()
# # del obj
# print('其他代码...') # class Bar:
# def __init__(self,x,y,filepath):
# self.x=x
# self.y=y
# self.f=open(filepath,'r',encoding='utf-8')
# def __del__(self):
# # 写回收系统资源相关的代码
# self.f.close()
#
# obj=Bar(10,20)
# del obj
''' # =================================(后期)
# 四 二次加工标准类型(包装)
# 六 描述符(__get__,__set__,__delete__)
# 熟透对象后再看这两块知识:
# http://www.cnblogs.com/linhaifeng/articles/6204014.html

PYTHON-绑定方法 反射 内置函数的更多相关文章

  1. Python 面向对象 (补充) , 反射 , 内置函数

    面向对象中内置函数 issubclass方法: 检查第一个参数是否是第二个参数的子子孙孙类     返回  :   是一个布尔值 class Base(object): pass class Foo( ...

  2. python字符串——"奇葩“的内置函数

      一.前言 python编程语言里的字符串与我们初期所学的c语言内的字符串还是有一定不同的,比如python字符串里的内置函数就比语言的要多得多:字符串内的书写格式也会有一点差异,例:字符串内含有引 ...

  3. python 类(object)的内置函数

    python 类(object)的内置函数 # python 类(object)的内置函数 ### 首先 #### 以__双下划线开头的内置函数 __ #### __往往会在某些时候被自动调用,例如之 ...

  4. Python标准库:内置函数hasattr(object, name)

    Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...

  5. python基础之反射内置方法元类

    补充内置函数 isinstance(obj,Foo)   # 判断obj是不是foo的实例 issubclass()      # 判断一个类是不是另一个类的子类 反射 什么是反射? 通过字符串来操作 ...

  6. python中的 dir()内置函数的作用以及使用方法

    dir() 内置函数的作用 python 内置方法有很多,无论是初学者还是精通python 的程序员都不能全部即住所有的方法,这时候 dir() 方法就非常有用了,使用 dir()函数可以查看对象内的 ...

  7. 第8.17节 Python __repr__方法和__str__方法、内置函数repr和str的异同点对比剖析

    一. 引言 记得刚开始学习Python学习字符串相关内容的时候,查了很多资料,也做了些测试,对repr和str这两个函数的返回值老猿一直没有真正理解,因为测试发现这两个函数基本上输出时一样的.到现在老 ...

  8. python---issubclass/type/isinstance/ 反射(内置函数getattr/delattr...)

    # 一 python面向对象-内置函数(issubclass(), type(), isinstance()) # issubclass 判断xxxx类是否是xxxx类的子类 class egg: p ...

  9. Python学习日记(十一) 内置函数

    什么是内置函数? 就是Python中已经写好了的函数,可以直接使用 内置函数图表: 以3.6.2为例 内置函数分类: 一.反射相关 1.hasattr() 2.getattr() 3.setattr( ...

随机推荐

  1. 牛客练习赛29 F 算式子

    https://www.nowcoder.com/acm/contest/211/F 经典题. 1.分区间 2.向下取整的值变化 & 合并相同值 #include <bits/stdc+ ...

  2. 走进HTTP协议之二 基本HTTP机制

    本系列第一节,我们回顾了与HTTP协议有关的基本术语和概念,本文将分析HTTP协议的基本原理与机制 HTTP协议的用途 HTTP协议用于客户端与服务器之间的通信,在通信线路两端,必定一端是客户端,另一 ...

  3. js对象克隆

    大家都知道,js的对象是引用类型,如果直接var obj2 = obj,obj2和obj是共享同一个对象实体的,这往往不是我们想要的结果. 官方并没有给出通用的对象克隆方法: 我们给出以下几种写法: ...

  4. mysql 8.0.12 创建新的数据库、用户并授权

    Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码: [root@host]# mysqladmin -u root password "new_p ...

  5. shell if [[ ]]的一次应用

    直接上代码 #!/bin/bash A="$1" if [[ "$A" == a* ]];then echo "aaa" else echo ...

  6. JVM总结(二):垃圾回收器

    这一节我们来总结一下JVM垃圾收集器方面的东西. 垃圾回收器 判断对象引用是否失效 对象生存判断算法 引用判断过程 垃圾收集算法简介 垃圾收集器 新生代垃圾收集器 老年代垃圾收集器 新生代和老年代垃圾 ...

  7. js动态操作DOM

    创建一个元素 createElement() 向元素末尾添加一个子节点 appendChild() 将新的元素插入到指定元素的前面 insertBefore(new,old); 删除一个子节点 rem ...

  8. modbus-vcr介绍

    相关链接:modbus-vcr modbus-vcr是一个Ettercap的插件,被使用在缺少数据完整性的工业控制系统协议方面. 这个Ettercap插件执行一个MITM攻击在使用Modbus协议的系 ...

  9. dubbo服务使用spring-data-mongodb进行时间查询的bug记录

    一.项目情况:spring-boot+mongodb+dubbo. 二.问题:调用dubbo服务并使用spring-data-mongodb的gte,lte时间段比较查询, @Reference(re ...

  10. snmp 发送类型ASN_OBJECT_ID

    参考链接: http://blog.csdn.net/yin138/article/details/50388878 ,,,,,,,,,}; int ret = snmp_set_var_typed_ ...