Python 面向对象编程——获取对象信息

1.1   获取对象信息

1.1.1   使用type()判断对象类型

>>> type(123)    --基本数据类型判断

<class ‘int‘>

>>> type(‘123‘)

<class ‘str‘>

>>> type(abs)    --python内置函数的判断

<class ‘builtin_function_or_method‘>

>>> type(Dog)

<class ‘type‘>

>>> type(Dog())    --自定义类的判断,引自上文中的Dogclass

<class ‘__main__.Dog‘>

>>> type(123) == type(456)

True

>>> type(‘123‘) == type(‘456‘) #可以在if中判断

True

判断对象是否是函数,types模块中的常量

>>> importtypes

>>> def fn():

...    pass

...

>>> type(fn) == types.FunctionType

True

>>> type(abs) ==types.BuiltinFunctionType

True

>>> type(lambda x:x) ==types.LambdaType

True

>>> type((x for x in range(10)))== types.GeneratorType

True

1.1.2   使用isinstance()判断继承

>>> class Animal(object):

...    pass

...

>>> class Dog(Animal):

...    pass

...

>>> class Erha(Dog):

...    pass

...

>>> # object -> Animal ->Dog -> Erha 继承关系

... a = Animal()     #依次创建对象

>>> b = Dog()

>>> c = Erha()

>>>

>>> isinstance(c,Erha)

True

>>> isinstance(c, Dog)

True

>>> isinstance(c, Animal)

True

>>> isinstance(b, Dog)

True

>>> isinstance(b, Animal)

True

>>> isinstance(b, Erha)

False

能用type()判断也可以用isinstance判断

>>> isinstance(123, int)

True

>>> isinstance(‘a‘, str)

True

>>> isinstance([1,2, 3], (list, tuple))    --判断一个变量是否是某些类型中的一种

True

>>> isinstance((1, 2, 3), (list,tuple))

True

1.1.3   使用dir()获取对象的属性和方法

>>> dir(‘abc‘)    --列出属性和方法

[‘__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‘]

配合getattr()、setattr()以及hasattr(),我们可以直接操作一个对象的状态。

>>> class Myobject(object):

...    def __init__(self):

...        self.x = 9

...    def power(self):

...        return self.x * self.x

...

>>> obj = Myobject()

>>> hasattr(obj,‘x‘)    #有属性‘x‘?

True

>>> obj.x

9

>>> getattr(obj,‘x‘)

9

>>> hasattr(obj, ‘y‘)    #有属性‘y‘?

False

>>> setattr(obj,‘y‘, 19)    #设置一个y属性为19

>>> getattr(obj, ‘y‘)

19

>>> obj.y

19

>>> hasattr(obj, ‘power‘)      #有属性power(方法)?

True

>>> getattr(obj, ‘power‘)      #获取属性power

<bound method Myobject.power of<__main__.Myobject object at 0x2af174d0bd68>>

SyntaxError: invalid character inidentifier

>>> getattr(obj, ‘power‘)()      #获取属性power值

81

>>> fn = getattr(obj, ‘power‘)

>>> fn()

81

hasattr的经典应用场景

应用上述的Myobject()实例

>>> def readPower(obj):

...    if hasattr(obj, ‘power‘):

...         return obj.power()

...    else:

...        return None

...

>>> readPower(Myobject)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "<stdin>", line 3, in readPower

TypeError: power() missing 1 requiredpositional argument: ‘self‘

>>> Myobject().x

9

>>> Myobject().power()

81

>>> readPower(Myobject())

81

时间: 2024-12-21 18:46:37

Python 面向对象编程——获取对象信息的相关文章

面向对象编程——获取对象信息(五)

当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()类型: >>> type(123) <class 'int'> >>> type('str') <class 'str'> >>> type(None) <class 'NoneType'> 如果一个变量指向函数或者类,也可以用type()判断: &g

python 面向对象五 获取对象信息 type isinstance getattr setattr hasattr

一.type()函数 判断基本数据类型可以直接写int,str等: 1 >>> class Animal(object): 2 ... pass 3 ... 4 >>> type(123) 5 <class 'int'> 6 >>> type('123') 7 <class 'str'> 8 >>> type(None) 9 <class 'NoneType'> 10 >>> ty

【Python】[面性对象编程] 获取对象信息,实例属性和类属性

获取对象信息1.使用isinstance()判断class类型2.dir() 返回一个对象的所有属性和方法3.如果试图获取不存在的对象会抛出异常[AttributeError]4.正确利用对象内置函数的例子: def readImage(fp): if hasattr(fp,"read"): return readData(fp) return None 实例属性和类属性1.一句话,Python是动态语言,根据类创建的实例可以任意绑定属性.    注意:实例属性和雷属性的名字要保持不一

Python快速学习-获取对象信息

1type() 获取对象的基本类型,判断两个对象类型. 2types 判断对象是否是函数,使用前要引入import types 3isinstance() 判断class类型,判断一个变量是否是某种类型中的一种,基本上能用type判断,都可以用isinstance. 4.dir() 获取对象的所有属性和方法.

python 获取对象信息

当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> type(123) <type 'int'> >>> type('str') <type 'str'> >>> type(None) <type 'NoneType'> 如果一个变量指向函数或者类,也可以用type()判断: >&

python 之获取对象信息

当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> type(123) <class 'int'> >>> type('str') <class 'str'> >>> type(None) <type(None) 'NoneType'> 如果一个变量指向函数或者类,也可以用type()判

Python day 8(3) 获取对象信息。

一:获取对象信息(对象的类型与方法) 法一: a 基本的数据类型都可以通过type()函数来判断. >>> type(123) <class 'int'> >>> type('str') <class 'str'> >>> type(None) <type(None) 'NoneType'>b 如果一个变量指向函数或者类,也可以用type()判断: >>> type(abs) <class '

python进阶四(类的继承)【4-5 python中获取对象信息】

python中获取对象信息 拿到一个变量,除了用 isinstance() 判断它是否是某种类型的实例外,还有没有别的方法获取到更多的信息呢? 例如,已有定义: 1 class Person(object): 2 def __init__(self, name, gender): 3 self.name = name 4 self.gender = gender 5 6 class Student(Person): 7 def __init__(self, name, gender, score

python获取对象信息

获取对象信息 拿到一个变量,除了用 isinstance() 判断它是否是某种类型的实例外,还有没有别的方法获取到更多的信息呢? 例如,已有定义: class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender class Student(Person): def __init__(self, name, gender, score): super(Student, sel