面向对象高级

Posted oden

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象高级相关的知识,希望对你有一定的参考价值。

面向对象高级

  • isinstance(obj,cls)和issubclass
isinstance(obj,cls)检查obj是否是类cls的对象

issubclass(sub,super)检查sub类是否是super类的派生类
  • 反射
python中面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以用反射)。
  • hasattr
hasattr(object,name)

# 判断object中有没有name的属性或者方法
  • getattr
getattr(object,name,default = None)

# object: 对象

# name: 字符串,属性

# default: 默认返回值,如果不提供该参数,在没有对应属性时,触发AttributeError
  • setattr
setattr(object,name,value)

# object: 对象

# name: 字符串,属性

# value: 属性值

# 对已存在的属性进行修改,如果没有,则会新建出这个属性
  • delattr
delattr(object,name)

# object: 对象
    
# name: 属性(必须是属性,不能是方法)

# detattr(x,‘foobar‘) == del x.foobar
  • 内置类属性
__dict__ :类的属性(包含一个字典,由类的数据属性组成)

__doc__: 类的文档字符串
    
__name__: 类名
    
__module__:类定义所在的模块(类的全名是‘__main__.className‘,如果类位于一个导入模块common_module中,那么className.__module__ 等于common_module)

技术图片

打印内容如下:

技术图片

  • 类中的魔术方法(内置的一些方法)
  • --str--
# 把一个类的实例变成str

class Person(object):
    self.name = name
    self.gender = gender
    
    def __str__(self):
        return ‘(Person:%s,%s)‘%(self.name,self.gender)
  • --steattr--
def __setattr__(self,name,value):
    pass

# 添加/修改属性时,会触发执行
  • --getattr--
def __getattr__(self,item):
    pass

# 只有在调用属性,且属性不存在时,才会触发
  • --getattr--
def __delattr__(self,item):
    pass

# 删除属性时会触发

以上是关于面向对象高级的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程与并发库高级应用-工具类介绍

Java多线程与并发库高级应用-工具类介绍

JS高级---复习

Python 高级部分:面向对象

阶段1 语言基础+高级_1-2 -面向对象和封装_1

Java面向对象和高级特性 项目实战