Python面向对象相关


1、异常处理python

    1.在编程过程当中为了增长友好性,在程序出现bug时通常不会将错误信息显示给用户,而是显示一个提示的页面,通俗来讲就是不让用户看见大黄页!!!编程

python程序中常见的错误显示信息有:ide

ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError

另外Exception能够捕获任何异常:函数

s1 = 'hello'this

try:url

    int(s1)spa

except KeyError as e:code

    print('键错误')对象

except IndexError as e:索引

    print('索引错误')

except Exception as e:

    print('错误')


2.异常其余结构

try:

    # 主代码块

    pass

except KeyError as e:

    # 异常时,执行该块

    pass

else:

    # 主代码块执行完,执行该块

    pass

finally:

    # 不管异常与否,最终执行该块

    pass


3.自定义主动触发异常

class SubError(Exception):      #自定义错误类

    def __init__(self,msg= None):

        self.msg = msg

    def __str__(self):

        if self.msg:

            return self.msg

        else:

            return 'self define error!'

try:                           # 代码主体

    arg = 'this is a self define error!'

    raise SubError(arg)        # 主动触发错误类

except Exception as e:         # e为Exception实例化对象,错误信息存储在对象中

    print(e)

4.断言

当首要条件不知足要求时整个程序将不会执行

a = 1           #  首要条件

try:

    assert a == 2   # 断言首要条件是否知足要求

    print('test')


except Exception as e:

    print('basic error:',e)


2、反射

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

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

class Foo(object):

 

    def __init__(self):

        self.name = 'wupeiqi'

 

    def func(self):

        return 'func'

 

obj = Foo()

 

# #### 检查是否含有成员 ####

hasattr(obj, 'name')

hasattr(obj, 'func')

 

# #### 获取成员 ####

getattr(obj, 'name')

getattr(obj, 'func')

 

# #### 设置成员 ####

setattr(obj, 'age', 18)

setattr(obj, 'show', lambda num: num + 1)

 

# #### 删除成员 ####

delattr(obj, 'name')

delattr(obj, 'func')


1.当咱们要访问一个对象的成员时,应该是这样操做:

方法一:

class Foo(object):

    def __init__(self):

        self.name = 'alex'

    def func(self):

        return 'func'

# 不容许使用 obj.name

obj = Foo()

print obj.__dict__['name']

方法二:

class Foo(object):

    def __init__(self):

        self.name = 'alex'

    def func(self):

        return 'func'

# 不容许使用 obj.name

obj = Foo()

print getattr(obj, 'name')


2.动态加载、反射操做模块中成员

class Foo(object):

    def __init__(self,name):

        self.name = name

    def dev1(self):

        return 'this is dev1 function'


mod,cls,fun = input('url:').split('/')

module = __import__(mod)

mc = getattr(module,cls)

mcf = getattr(mc,fun)

ret = mcf('a')

print(ret)


5、单例模式

单例模式即为单个实例模式

# ########### 单例类定义 ###########

class Foo(object):

 

    __instance = None    # 私有字段

 

    @staticmethod        # 静态方法

    def singleton():

        if Foo.__instance:

            return Foo.__instance

        else:

            Foo.__instance = Foo()

            return Foo.__instance

 

# ########### 获取实例 ###########

obj = Foo.singleton()

第一次调用singleton方法时实现实例化类,第二次及之后调用singleton方法时均为同一实例,
总结:单利模式存在的目的是保证当前内存中仅存在单个实例,避免内存浪费!!!

相关文章
相关标签/搜索