面向对象内置方法

1.isinstance(obj,cls)和issubclass(sub,super)

判断obj是否是cls类的对象
例:
li=[1,[2,[3,[4]]]]
def run_list(li):
    for i in li:
        if isinstance(i,list):
            run_list(i)
        else:
            print(i)
run_list(li)
判断sub是否是super的派生类

2. 反射

  • 定义:
通过字符串的形式操作对象的相关属性
  • 相关方法
(1)hasattr
print(hasattr(peo1,'name')) #判断name是否在peo1.name中是可以访问的属性
(2)getarrt
print(getattr(peo1,'xx','None'))#在peo1中没有xx这个属性,有的话返回对应的值;没有这个属性,返回None,不会报错
(3)strattr
setattr(peo1,'age',19)    #增加属性
# print(peo1 .__dict__ )
(4)delattr(peo1,'name')  #删除
  • 内置方法
__str__ 在打印对象时触发
__del__析构方法
__getattr__ 对象在调用属性和方法时,找不到,就会触发;
__setattr__ 对象再给属性赋值时,就会触发

class A():
    bb='123'
    def __getattr__(self, item):
        print(item)  #byuu
        return 'aa'

    def __setattr__(self,  key,value):
         print(key,value) # 新的属性名和值 bb 199
a = A()
print(a.byuu)  #调用的属性不存在就触发__getattr__
# a.bb = 199  # 属性赋值时触发__setattr__

原文地址:https://www.cnblogs.com/quqinchao/p/11257687.html

时间: 2024-07-29 23:49:10

面向对象内置方法的相关文章

九.python面向对象(内置方法)

一. 内置方法 1.__getattr__ 原文地址:https://www.cnblogs.com/Sup-to/p/10887811.html

面向对象-内置方法

class Foo: def __init__(self,name,age): self.name=name self.age=age def __getitem__(self,item): print('getitem') print(item) return self.__dict__.get(item) def __setitem__(self, key, value): print('setitem') print(key,value) self.__dict__[key]=value

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

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

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

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

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

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

Python之面向对象:类的内置方法

1.def __add__(self,other): c1+c2 两个实例的加法操作就是执行__add__()方法 2.__str__(self): print一个实例的时候,执行的是__str__()这个内置方法 eg: class Vector(object): def __init__(self,a,b): self.a = a self.b = b def __str__(self): return 'Vector(%d,%d)'%(self.a,self.b) def __add__(

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) """ 判断是否拥有某个属性:

铁乐学python_day24_面向对象进阶1_内置方法

题外话1: 学习方法[wwwh] what where why how 是什么,用在哪里,为什么,怎么用 学习到一个新知识点的时候,多问问上面的四个问题,并了解和实践透彻. 什么是反射? 先不说枯燥的概念,你可以自己总结出来,对于python中的反射,什么时候会用到? 需要使用字符串数据类型的变量名来使用变量的时候用到反射. (通过字符串的形式操作对象相关的属性和方法.) 关键词:字符串 使用到字符串的场景多在: 1)文件中存储的是字符串, 2)网络上能传递的也最接近字符串, 3)用户输入的(用