码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象高级

时间:2019-02-24 17:31:19      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:必须   导入模块   面向对象   对象   字符   一个   形式   文档   添加   

面向对象高级

  • 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

# 删除属性时会触发

面向对象高级

标签:必须   导入模块   面向对象   对象   字符   一个   形式   文档   添加   

原文地址:https://www.cnblogs.com/oden/p/10426861.html

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