PYTHON-绑定方法 反射 内置函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PYTHON-绑定方法 反射 内置函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4484字,纯文字阅读大概需要7分钟。
内容图文
![PYTHON-绑定方法 反射 内置函数](/upload/InfoBanner/zyjiaocheng/849/92293b160e594110b3cbd938c4661ce1.jpg)
'''
类中定义函数分为了两大类:
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-绑定方法 反射 内置函数全部内容,希望文章能够帮你解决PYTHON-绑定方法 反射 内置函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。