绑定,反射,内置函数

#绑定方法:绑定给谁就应该谁来调用,谁来调用就会把谁当做第一个参数自动传入
import setting #配置文件为setting

class mysql:
def __init__(self,host,port): #绑定到对象
self.host=host
self.port=port

@classmethod #绑定到类
def from_conf(cls):
return cls(setting.HOST,setting.PORT)

@staticmethod #不与类也不与对象绑定
def creat_id():
n=eroos
return n

con=mysql.from_conf()
print(con.port,con.host)
com=mysql.creat_id()
print(com.create_id)

#反射 通过字符串来操作对象或者类的属性 1.hasattr 2.setattr 3.getattr 4.delattr
class foo:
def __init__(self,name):
self.name=name

def f1(self):
print(‘f1‘)

obj=foo(‘abc‘)

#hasattr() 判断
print(hasattr(obj,‘name‘))
print(hasattr(obj,‘f1‘))

#getattr 调用
if hasattr(obj,‘f1‘):
f=getattr(obj,‘f1‘)
#print(f)
f()

#setattr() 修改
obj.x=1
setattr(obj,‘x‘,2)
print(obj.__dict__)

#delattr 删除
#del obj.name
delattr(obj,‘name‘)
print(obj.__dict__)

class fprser:
def __init__(self,host,port):
self.host=host
self.port=port
self.conn=‘xxx‘
def intera(self):
while True:
cmd=input(‘>>: ‘).strip()
if not cmd:continue
cmd_l=cmd.split()
print(cmd_l)
if hasattr(self,cmd_l[0]):
func=getattr(self,cmd_l[0])
func(cmd_l)

def get(self,cmd_l):
print(‘geting......‘,cmd_l)

def put(self,cmd_l):
print(‘puting...‘,cmd_l)

client=fprser(‘2.2.2.2‘,23)
client.intera()

#内置函数
isinstance() #判断一个对象是不是某个类型的
l=list([])
print(isinstance(l,list))

issubclass() #判断是不是某个的子类
class foo:
pass
class bar(foo):
pass
print(issubclass(bar,foo))

#__str__ #打印时触发,默认打印内存地址
class foo:
def __init__(self,name,age): #初始化时触发
self.name=name
self.age=age

def __str__(self): ##打印时触发
return <__main__,.......> #可以修改打印自己需要的
conf=foo(‘abc‘,38)
print(conf) #print(abc.__str__())

#__del__ 回收之后在打印del
class foo:
def __del__(self):
print(‘del....‘)

obj=foo()
print(‘123‘)

class foo:
def __del__(self):
print(‘del....‘)

obj = foo()
del obj
print(‘123‘)

原文地址:http://blog.51cto.com/13399294/2296060

时间: 2024-11-11 12:12:55

绑定,反射,内置函数的相关文章

绑定与非绑定方法及反射,isinstance和issubclass内置函数

目录 绑定方法与非绑定方法 1.绑定方法 2.非绑定方法(staticmethod) isinstance和issubclass 内置函数 1.isinstance 2.issubclass 反射 反射定义 4个可以实现反省的函数(内置函数) 反射使用场景 绑定方法与非绑定方法 1.绑定方法 ? 绑定方法:绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数传入 ? ? 绑定给对象的方法: ? 类中定义的函数默认就是绑定给对象的 ? 绑定给类的方法: ? 为类中定义的函数加上一个装饰器cla

python3全栈开发-内置函数补充,反射,元类,__str__,__del__,exec,type,__call__方法

一.内置函数补充 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstance(obj, Foo)) #结果为True 2.issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass print(issubclass(Bar, Foo)) #结果为True

python26 封装 多态 常用的内置函数 `__str__` `__del__` 反射 动态导入模块

今日内容: 1. 封装 2.多态 3. 常用的内置函数 `__str__ `__del__` 4.反射 5.动态导入模块 #1. 封装 ##1.1 什么是封装 ?(what) 对外部隐藏内部的属性,以及实现细节  , 给外部提供使用的接口 注意:封装有隐藏的意思,但不是单纯的隐藏 1.2学习封装的目的. 就是为了能够限制外界对内部数据的访问 1.3python中属性的权限分为两种 1.公开的 ?           没有任何限制 谁都能访问 2.私有的 ?          只有当前类本身能够访

learn_Day14 内置函数补充、反射、初识面向对象

内置函数 __import__()用于导入模块 getattr 用于寻找模块的指定对象 a = __import__('b')  # b为模块名,b是字符串 ==>> 导入模块b并重新命名为a c = getattr(a,'d')  # d为模块中指定对象 ==>> 找到模块中命名为d的对象 d() ==>> 执行d # getattr(a,'b', c) # 从a模块中导入b.c参数可不写表示找不到报错:c为None表示找不到不报错,返回None. # hasattr

内置函数补充 之 反射

getattr 反射 为什么要有反射? 当在设计一个页面访问的时候,通过用户输入相应的url,进入相应的页面,在用户输入的url地址不存在的时候,返回404错误. def run(): inp = input('请输入要访问的url:') if inp == 'login': commons.login() elif inp == 'logout': commons.logout() elif inp == 'home': commons.home() else: print('404') ru

1、面向对象内置函数 2、反射 3、内置方法

1.isinstance()    判断对象所属类型,包括继承关系 2.issubclass() 判断类与类之间的继承关系 class A:pass class B(A): pass print(isinstance(b,B))   # o,t print(isinstance(b,A))  #  o,t class mystr(str): pass ms = mystr("alex") print(type(ms) is str)  # 不包含继承关系,只管一层 print(isin

类的相关内置函数及反射

类变量的内存位置相关练习 1.1 class StarkConfig(object): list_display = [] def get_list_display(self): self.list_display.insert(0,33) return self.list_display class RoleConfig(StarkConfig): list_display = [11,22] s1 = StarkConfig() result1 = s1.get_list_display()

第二十五章 面向对象------封装、内置函数、反射、动态导入

1.封装 什么是封装? 1.对外部隐藏内部的属性,以及实现细节,给外部提供使用的接口 注意:封装有隐藏的意思,但不是单纯的隐藏 学习封装的目的:就是为了能够限制外界对内部数据的访问 python中属性的权限分为两种: 1.公开的 没有任何限制,谁都可以访问 2.私有的 只有当前类本身能狗访问 默认为公共的 为什么要封装? 1.提高安全性 封装属性 2.隔离复杂度 封装方法 一个类中分为两种数据:属性和方法 封装属性 class Student: def __init__(self,name,ag

内置函数补充,__str__方法、__del__方法 和 __call__方法和元祖

一 .内置函数补充 1.isinstance函数: isinstance(obj,cls)检查obj是否是类 cls 的对象 使用该函数来判断一个函数的类型 2. issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass issubclass(Bar, Foo) 3.下述四个函数是专门用来操作类与对象属性的,如何操作? 通过字符串来操作类与对象的属性,这种操作称为反射 clas