python基础学习日志day7-类的反射

1)python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,

  改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。

# -*- coding:utf-8 -*-
__author__ = ‘shisanjun‘

class Foo(object):
    def __init__(self):
        self.name="s"

    def func(self):
        return ‘func‘

obj=Foo()
#检查是否含有成员
print("----是否有成员-----")
print(hasattr(obj,"name"))
print(hasattr(obj,"func"))

#获取成员
print("----获取成员-----")
print(getattr(obj,"name"))
print(getattr(obj,"func")()) #getattr(obj,"func")实例的func的内存地址

#设置成员
print("----设置成员-----")
def show(num):
    return num+1
setattr(obj,"age",18)
setattr(obj,"show",3)
print(getattr(obj,"age"))
print(getattr(obj,"show"))

delattr(obj,"age")
delattr(obj,‘show‘)
print("----是否有成员-----")
print(hasattr(obj,"age"))
print(hasattr(obj,"show"))

"""
----是否有成员-----
True
True
----获取成员-----
s
func
----设置成员-----
18
3
----是否有成员-----
False
False
"""

2)其他方法访问类的成员

class Foo(object):

    def __init__(self):
        self.name = ‘alex‘

    def func(self):
        return ‘func‘

# 不允许使用 obj.name
obj = Foo()

print obj.__dict__[‘name‘]
时间: 2024-11-18 04:53:37

python基础学习日志day7-类的反射的相关文章

python基础学习日志day5-各模块文章导航

python基础学习日志day5---模块使用 http://www.cnblogs.com/lixiang1013/p/6832475.html python基础学习日志day5---time和datetime模块 http://www.cnblogs.com/lixiang1013/p/6848245.html python基础学习日志day5---random模块http://www.cnblogs.com/lixiang1013/p/6849162.html python基础学习日志da

python基础学习日志day6-面向对象

什么是面向对象编程 OOP编程是利用"类"和对象来创建各种模型来实现对真实世界的描述. OOP具有可维护性和可扩展性 二:面向对象有那些特性 1)CLASS类:一个类是对拥有相同属性的对象的抽象.类拥有类的属性和类的方法. 2)OBJECT对象:一个对象即是一个类的实例化的实例.这个过程就实例化. 3)Encapsulation封装:在类中对数据的赋值,内部调用对外部是透明. 4)Inheritance继承:一个类可以派生成子类,在这个父类的定义的属性和方法自动被子类继承 5)Poly

python基础学习日志day6-类的经典类vs新式类

经典类VS新式类区别 1)写法新式类class Person(object):#new style 经典类class Persion: #classical style 2)调用父类 新式写法用super 经典类直接写父类类名 3)多继承时继承顺序python3使用的是广度查询,所以两个都一样. 经典类python2是深度查询.所以经典类python2多继承是有BUG class D(B,C) D-->B-->A--C # -*- coding:utf-8 -*- __author__ = '

python基础学习日志day5---logging模块

很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug(), info(), warning(), error() and critical() 5个级别,下面我们看一下怎么用. 最简单用法 1 2 3 4 5 6 7 8 import logging logging.warning("user [alex] attempt

python基础学习日志day7-类的起源

Python中一切事物都是对象. class Foo(object): def __init__(self,name): self.name = name f = Foo("alex") f对象是FOO类的一个实例,Foo类对象是type类的一个实例. print(type(f)) print(type(foo)) # -*- coding:utf-8 -*- __author__ = 'shisanjun' class Foo(object): def func(self): pri

python基础学习日志day9--线程队列queue

一:线程queu作用 Python中,queue是线程间最常用的交换数据的形式. 队列两个作用:一个是解耦,一个是提高效率 二:语法 1)队列的类 class queue.Queue(maxsize=0) #先入先出 class queue.LifoQueue(maxsize=0) #last in fisrt out  class queue.PriorityQueue(maxsize=0) #存储数据时可设置优先级的队列 优先级队列的构造函数.maxsize可以放置在队列中的项的最大个数.

python基础学习日志day6-类的继承

继承:承创建的新类称为"子类"或"派生类",被继承的类称为"基类"."父类. 继承的过程,就是从一般到特殊的过程.要实现继承,可以通过"继承"(Inheritance)和"组合"(Composition)来实现 继承概念的实现方式主要有2类:实现继承.接口继承. 实现继承是指使用基类的属性和方法而无需额外编码的能力 接口继承是指仅使用属性和方法的名称.但是子类必须提供实现的能力(子类重构爹类方法)

python基础学习日志day8-异常处理

一.异常基础 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面. 1)常用方式: try: pass except Exception as e: pass 一直尝试try中的代码,如果遇到错误和except中异常相同,就执行except中代码,如果和except没有相同,还是会抛出异常 # -*- coding:utf-8 -*- __author__ = 'shisanjun' names=['1','2','3'] data={} try:

python基础学习日志day8-SocketServer

摘要: SocketServer简化了网络服务器的编写.它有4个类:TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer.这4个类是同步进行处理的,另外通过ForkingMixIn和ThreadingMixIn类来支持异步. 创建服务器的步骤.首先,你必须创建一个请求处理类,它是BaseRequestHandler的子类并重载其handle()方法.其次,你必须实例化一个服务器类,传入服务器的地址和请求处理程序类.最后,调用handle_