异常和处理之断言(逻辑异常处理 eg:父子年龄写反 进行判断)
assert 条件 ,[返回提示错误信息]
?
条件返回布尔值 为True继续往下运行 否则报错
例题
asster isinstance(request,HttpRequest),(报错提示)
isinstance使用
eg:>>>a = 2
>>> isinstance (a,int)
True
Python中getattr、get、getattr和getattribute的区别
2018-08-27阅读 6660
原创博客,如需转载,请联系作者
在使用Python的过程中可能遇到以下几个函数:
-
getattr
-
__getattr__
-
__getattribute__
-
__get__
它们的用法是怎样的呢?它们之间又有什么区别呢?别急,请听我慢慢道来。
getattr
getattr (object, name[, default])
是Python的内置函数之一,它的作用是获取对象的属性。
-
object 对象
-
name 属性名
-
default 当属性不存在时,返回的默认值
示例
>>> class Foo:
_ getattr _
object. __getattr__(self, name)
是一个对象方法,如果找不到对象的属性时会调用这个方法。
这个方法应该返回属性值或者抛出AttributeError
异常。
注意,如果通过正常机制能找到对象属性的话,不会调用__getattr__
方法。
示例
>>> class Frob:
getattribute __ __
当访问 某个对象的属性时,会无条件的调用这个方法。这个方法只适用于新式类。 新式类就是集成自object或者type的类。
如果类还同时定义了__getattr__()
方法,则不会调用__getattr__()
方法,除非在__getattribute__()
方法中显示调用__getattr__()
或者抛出了AttributeError
。
该方法应该返回属性值或者抛出AttributeError
异常。
为了避免在方法中出现无限递归的情况,应该总是使用基类的方法来获取属性:
>>> object.__getattribute__(self, name).
语法:object. __getattribute__(self, name)
示例
>>> class Frob(object):
__ get ___ _
__get__()
方法是描述符方法之一。描述符用于将访问对象属性转变成调用描述符方法。
示例:
class Descriptor(object):
def __get__(self, obj, objtype):
print "get value=%s" % self.val
return self.val
?
def __set__(self, obj, val):
print "set value=%s" % val
self.val = val
?
class Stu(object):
age = Descriptor()
?
stu = Stu()
stu.age = 12 # set value=12
print stu.age # get value=12
# 12