27 isinstance与issubclass、反射、内置方法

isinstance与issubclass

issubclass:判断子类是否属于父类,是则返回True,否则返回False

isinstance:判断对象是否属于类,是则返回True,否则返回False

class Bar:
    pass

class Foo(Bar):
    pass

print(issubclass(Foo,Bar))#输出一个True
obj=Foo()

print(isinstance(obj,Foo))#输出一个True

反射

反射:通过字符串来反射/映射到对象/类的属性上
class People:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def run(self):
        print(‘%s is running‘ %self.name)

obj=People(‘egon‘,18)

print(hasattr(obj,‘name‘)) # ‘name‘ in obj.__dict__  判断属性是否在__dict__里
print(getattr(obj,‘name‘)) # obj.__dict__[‘name‘]    从__dict__里获取name,没有则会报错
print(getattr(obj,‘xxx‘,None)) # obj.__dict__[‘xxx‘] 设置没有找到返回None

setattr(obj,‘name‘,‘EGON‘) #obj.__dict__[‘name‘]=‘EGON‘  更新
setattr(obj,‘xxx‘,1111) #obj.__dict__[‘xxx‘]=111

delattr(obj,‘name‘)

内置方法

# __str__: 在对象被打印时自动触发,可以用来定义对象被打印时的输出信息# 注意:必须返回一个字符串类型的值

class People:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        print(‘run..........‘)
        return ‘<name:%s age:%s>‘ % (self.name, self.age)

obj1 = People(‘egon‘, 18)
print(obj1)  # print(obj1.__str__())

# __del__: 在对象被删除时先自动触发该方法,可以用来回收对象以外其他相关资源,比如系统资源

class Foo:
    def __init__(self,x,filepath,encoding=‘utf-8‘):
        self.x=x
        self.f=open(filepath,‘rt‘,encoding=encoding)

    def __del__(self):
        print(‘run.....‘)
        # 回收对象关联的其他资源
        self.f.close()

obj=Foo(1,‘a.txt‘)
del obj
print(‘主===========>‘)

# __call__: 在对象被调用时会自动触发该方法,可以用来???

# __call__: 在对象被调用时会自动触发该方法,可以用来???



原文地址:https://www.cnblogs.com/ouyang99-/p/10415413.html

时间: 2024-08-06 10:31:59

27 isinstance与issubclass、反射、内置方法的相关文章

python基础27——反射&amp;内置方法

反射 什么是反射? 指的是在程序运行过程中可以"动态(不见棺材不掉泪)"获取对象的信息 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省) 什么是反射机制? 反射机制指的是在程序的运行状态中 对于任意一个类,都可以知道这个类的所有属性和方法 对于任意一个对象,都能够调用他的任意方法和属性 这种动态获取程序信息以及动态调用对象的功能称为反射机制 如何实现反射? class People: def __init__(self,

反射 内置方法

# isinstance()判断对象所属类型,包括继承关系 判断对象# class A:pass# class B(A):pass# b=B()# print(isinstance(b,B))# b属于 B# print(isinstance(b,A))# b属于 A##ssubclass() 判断类与类之间的继承关系# class A:pass# class B(A):pass# print(issubclass(B,A))# b属于 B# print(issubclass(A,B))# A不

issubclass和isinstance,反射,内置方法

目录 面向对象进阶 一.issubclass 和 isinstance 1.1 issubclass 1.2 isinstance 二.反射 2.1 什么是反射 2.2 四个可以通过字符串操作对象属性和方法的内置函数 2.2.1 hasattr() 2.2.2 getattr() 2.2.3 setattr() 2.3.4 delattr() 三.内置方法 3.1 __str__和__repr__ 3.2 点拦截方法:__setattr__,__delattr__,__getattr__ 3.3

面向对象之反射及内置方法

一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被类调用,就像正常调用函数一样 类方法和静态方法的相同点:都可以直接被类调用,不需要实例化 类方法和静态方法的不同点: 类方法必须有一个cls参数表示这个类,可以使用类属性 静态方法不需要参数 绑定方法:分为普通方法和类方法 普通方法:默认有一个self对象传进来,并且只能被对象调用-------绑定

Python学习【第14篇】:面向对象之反射以及内置方法

面向对象之反射及内置方法 一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被类调用,就像正常调用函数一样 类方法和静态方法的相同点:都可以直接被类调用,不需要实例化 类方法和静态方法的不同点: 类方法必须有一个cls参数表示这个类,可以使用类属性 静态方法不需要参数 绑定方法:分为普通方法和类方法 普通方法:默认有一个self对象传进来,并且只能被

day27 反射、内置方法

一.isinstance和issubclass class Foo: pass class Son(Foo): pass s = Son() #判断一个对象是不是这个类的对象,传两个参数(对象,类) # print(isinstance(s,Son)) # print(isinstance(s,Foo)) # print(type(s) is Son) # print(type(s) is Foo) #判断一个类是不是另一类的子类,传两个参数(子类,父类) print(issubclass(So

面向对象的进阶---反射--一些内置方法

反射 反射和一些类的内置方法 1 isinstance ---- issubclass type()--判断 是不是 ininstance(object,cls) 判断 是不是类的对象 如果这个类有父类 这个对象也是这个父类的对象 issubclaaa(cls,cls) 判断一个类是不是另一个类的子类 ============================= 反射 ================================= 把一个字符串 类型的变量 变成一个 真实存在这个程序中的变量名

python全栈开发【第十七篇】面向对象反射和内置方法

一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被类调用,就像正常调用函数一样 类方法和静态方法的相同点:都可以直接被类调用,不需要实例化 类方法和静态方法的不同点: 类方法必须有一个cls参数表示这个类,可以使用类属性 静态方法不需要参数 绑定方法:分为普通方法和类方法 普通方法:默认有一个self对象传进来,并且只能被对象调用-------绑定

面向对象:反射、内置方法

反射:通过字符串映射到对象或者类的属性 反射的方法: class People: country = "China" def __init__(self,name,age): self.name = name self.age = age def talk(self): print("%s is talking" % self.name) obj = People("neo",22) """ 判断是否拥有某个属性: