码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习之旅(十八)

时间:2018-11-29 21:18:32      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:abs   end   sprint   slow   rac   tin   存在   index   没有   

Python基础知识(17):面向对象编程(Ⅱ)

获取对象信息

在不知道对象信息的情况下,我们想要去获取对象信息,可以使用以下方法

1、type

(1)判断对象类型

>>> type(123)
<class int>
>>> type("name")
<class str>
>>> type(None)
<class NoneType>
>>> type(abs)
<class builtin_function_or_method>
>>> import Person
>>> type(Person)
<class module>

(2)比较两个对象是否是同一个类型

>>> type(123)==type(456)
True
>>> type(123)==int
True

2、isinstance

(1)判断一个对象是否是该类型本身或位于该类型的父类继承链

 

#play.py
class
Animals(object): def play(): pass class Dog(Animals): def play(): pass class Kity(Dog): def play(): pass a=Animals() d=Dog() k=Kity()
>>> import play
>>> isinstance(k,Kity) True >>> isinstance(k,Dog) True >>> isinstance(k,Animals) True >>> isinstance(k,object) True >>> isinstance(d,Kity) False

(2)判断一个变量是否是某些类型中的其中一种

>>> isinstance(123,(str,int))
True

3、dir

获得一个对象的所有属性和方法

 

>>> dir("Alice")
[__add__, __class__, __contains__, __delattr__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getitem__, __getnewargs__, __gt__, __hash__, __init__, __iter__, __le__, __len__, __lt__, __mod__, __mul__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __rmod__, __rmul__, __setattr__, __sizeof__, __str__, __subclasshook__, capitalize, casefold, center, count, encode, endswith, expandtabs, find, format, format_map, index, isalnum, isalpha, isdecimal, isdigit, isidentifier, islower, isnumeric, isprintable, isspace, istitle, isupper, join, ljust, lower, lstrip, maketrans, partition, replace, rfind, rindex, rjust, rpartition, rsplit, rstrip, split, splitlines, startswith, strip, swapcase, title, translate, upper, zfill]

测试对象属性

hasattr:有没有该属性

setattr:设置该属性

getattr:获取该属性

>>> class Cal(object):
    x=2
    def cal():
        self.y=1
        return x+y

    
>>> ca=Cal()
>>> hasattr(ca,"x")
True
>>> setattr(ca,"z",3)
>>> getattr(ca,"z")
3
>>> getattr(ca,"p")

如果试图获取某个不存在的属性会报错

可以传入一个default参数,如果想获取的属性不存在,就返回默认值

>>> getattr(ca,"p")
Traceback (most recent call last):
  File "<pyshell#57>", line 1, in <module>
    getattr(ca,"p")
AttributeError: Cal object has no attribute p
>>> getattr(ca,"p",404)
404

实例属性和类属性

1、实例属性属于各个实例所有,互不干扰

通过实例变量给实例绑定属性

2、类属性属于类所有,所有实例都可以使用

3、当实例属性和类属性名字相同时,类属性将会被屏蔽

Python学习之旅(十八)

标签:abs   end   sprint   slow   rac   tin   存在   index   没有   

原文地址:https://www.cnblogs.com/finsomway/p/10037647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!