zoukankan      html  css  js  c++  java
  • 洗礼灵魂,修炼python(36)--面向对象编程(6)—类的相关内置函数issubclass,hasattr等

    啥?我靠,类也有内置函数?哈哈,确实有的。有哪些呢?请往下看

    issubclass(cls, class_or_tuple, /)

    1.基本属性:

    方法全是特殊方法

    2.使用方法:判断一个类是否由另一个类派生(继承)

    先说说里面的参数,第一个cls即是class,类的意思。第二个class_or_tuple是类或者元组(下同)

    当第一个参数类是第二个参数类的子类,那么就返回True,属于非严格性道德检测:

    • 1)一个类被认为是其自身的子类
    • 2)class_or_tuple可以是类对象组成的元组,只要cls是元组的其中任何一个候选类,则返回True

    3.例:

    最后一个和object对象和定义的Human类做检测是返回真,这也说明前面提到的所有的参数都继承与object对象

    isinstance(obj, class_or_tuple, /)

     1.基本属性:(略过,自行使用help和dir查看,下同)

    2.使用方法:检测一个对象是否是给定类的实例对象

    哈哈,这个BIF没想到吧?用法和type函数一样的,它居然也是类的BIF的,是的,其实比如字符串,整形这些类型它们也继承与str和int类,所以isinstance可以做出和type函数一样的判断。好的,用法都清楚,它就是用来检测实例对象是否属于类的。不过需要注意的是:

    • 1)如果第一个参数obj不是对象,则永远返回False
    • 2)如果第二个参数class_or_tuple不是类或者由类对象组成的元组,会抛出一个TypeError异常

    3.由于用法都清楚了,所以不再举例。不过要注意的是这种情况:

    看懂了吗?c是C类对象的实例化对象,C继承自A,但是不继承B,所以返回假,但是你说,C继承A,所以c和A为真,而B和c都是继承于object对象,你说那么c和B也为真啊。这种想法是错的,要注意了。(如果没有这种想法的直接略过,别搞混了)

    super([type,obj | type2])

    1.基本属性:(略过)

    2.使用方法:在子类找出其父类以便于调用其属性

    参数是可选的。前面在继承的博文中也提到了怎么使用了。要注意的是:

    一般情况下仅能采用非绑定方式调用基类方法,而super()可用于传入实例或类型对象

    比如:super(Human,self)(也就是前面解析super函数的第二种写法)

    3.例:(略过,直接看前面的[继承]的博文就行)

    hasattr(obj, name, /)

    1.基本属性:(略过)

    2.使用方法:测试对象里是否有指定的属性

    第一个参数掠过,第二个参数“name”需要用引号(不然报错),字符串标志

    3.例:

    getattr(object, name[, default])

    1.基本属性:(略过)

    2.使用方法:获得给定类的属性的值

    第一个参数不用说,第二个参数也是类的属性,需要引号,第三个参数可选,可以随意设定,当第二个参数并不是其类的属性时,返回设定的第三个参数

    3.例:

     

    setattr(obj, name, value, /)

    1.基本属性:(略过)

    2.使用方法:设置给定类的属性的值

    第一个参数略过,第二个参数同样的是属性名,需要引号,第三个参数是要设置的属性的值

    3.例:

    delattr(obj, name, /)

    1.基本属性:(略过)

    2.使用方法:与seattr相反,删除给定类的属性(连值一起删除)

    3.例:

    报错信息是指A对象没有‘x’属性

    property(fget=None, fset=None, fdel=None, doc=None)

    1.基本属性:(略过)

    2.使用方法:通过属性设置属性

    第一个fget是获取属性的方法,第二个fget是设置属性的方法,第三个fdel是删除属性的方法,第四个doc是文档(很少用)

    其实你可以理解就是通过property设定规则,当获取值,设定值,删除值都会直接作用与这个类对象把其事先设定的属性改变

    3.例:

    报错提示A类对象不存在属性‘x’。

    property的用法后面还会出现。敬请期待

  • 相关阅读:
    chrome安装HostAdmin app
    Python编码问题
    Elasticsearch利用scroll查询获取所有数据
    oracle不小心更新了数据库中的所有内容后的恢复
    git误提交了项目文件和配置文件的恢复方法
    生成banner的网站
    去除字符串中的emoji字符
    爬虫从网页中去取的数据中包含 空格
    高版本的jdk编译过的项目移到低版本的JDK的eclipse中出错的问题
    java爬虫爬取的html内容中空格( )变为问号“?”的解决方法
  • 原文地址:https://www.cnblogs.com/Eeyhan/p/7682469.html
Copyright © 2011-2022 走看看