Python面向对象之内置函数相关知识总结

Python内置函数

1. classmethod、staticmethod、property 。

上述三个内置函数在文章(Python进阶——面向对象之成员)的方法和属性中已经详细介绍使用,可以返回浏览,具体地址:

2. callable,是否可在后面加括号执行。

函数

def func():
    pass

print( callable(func) ) # True

class Foo(object):
    pass

print( callable(Foo) ) # True

类中具有__call__方法的对象

class Foo(object):
	pass

obj = Foo()
print( callable(obj) ) # False
class Foo(object):

    def __call__(self, *args, **kwargs):
        pass

obj = Foo()
print( callable(obj) ) # True

所以当你以后在见到下面的情况时,首先就要想到handler可以是:函数、类、具有call方法的对象 这三种,到底具体是什么,需要根据代码的调用关系才能分析出来。

def do_something(handler):
    handler()

3. super,按照mro继承关系向上找成员。

class Top(object):
    def message(self, num):
        print("Top.message", num)

class Base(Top):
    pass

class Foo(Base):

    def message(self, num):
        print("Foo.message", num)
        super().message(num + 100)

obj = Foo()
obj.message(1)

>>> Foo.message 1
>>> Top.message 101
class Base(object):

    def message(self, num):
        print("Base.message", num)
        super().message(1000)

class Bar(object):

    def message(self, num):
        print("Bar.message", num)

class Foo(Base, Bar):
    pass

obj = Foo()
obj.message(1)

>>> Base.message 1
>>> Bar.message 1000

应用场景

假设有一个类,他原来已实现了某些功能,但我们想在他的基础上再扩展点功能,重新写一遍?比较麻烦,此时可以用super。

info = dict() # {}
info['name'] = "华青水上"
info["age"] = 18

value = info.get("age")

print(value)
class MyDict(dict):

    def get(self, k):
        print("自定义功能")
        return super().get(k)

info = MyDict()
info['name'] = "华青水上" # __setitem__
info["age"] = 18       # __setitem__
print(info)

value = info.get("age")

print(value)

4. type,获取一个对象的类型。

v1 = "华青水上"
result = type(v1)
print(result) # <class 'str'>
v2 = "华青水上"
print( type(v2) == str )  # True

v3 = [11, 22, 33] # list(...)
print( type(v3) == list )  # True
class Foo(object):
    pass

v4 = Foo()

print( type(v4) == Foo )  # True

5. isinstance,判断对象是否是某个类或其子类的实例。

class Top(object):
    pass

class Base(Top):
    pass

class Foo(Base):
    pass

v1 = Foo()

print( isinstance(v1, Foo) )   # True,对象v1是Foo类的实例
print( isinstance(v1, Base) )  # True,对象v1的Base子类的实例。
print( isinstance(v1, Top) )   # True,对象v1的Top子类的实例。
class Animal(object):
    def run(self):
        pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

data_list = [
    "alex",
    Dog(),
    Cat(),
	"root"
]

for item in data_list:
    if type(item) == Cat:
        item.run()
    elif type(item) == Dog:
        item.run()
    else:
        pass

for item in data_list:
    if isinstance(item, Animal):
        item.run()
    else:
        pass

6. issubclass,判断类是否是某个类的子孙类。

class Top(object):
    pass

class Base(Top):
    pass

class Foo(Base):
    pass

print(issubclass(Foo, Base))  # True
print(issubclass(Foo, Top))   # True

至此,关于面向对象的一些内置函数已经总结完毕,如有不当之处,欢迎指正!

到此这篇关于Python面向对象之内置函数相关知识总结的文章就介绍到这了,更多相关Python内置函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python内置函数及功能简介汇总

    python内建函数 最近一直在看python的document,打算在基础方面重点看一下python的keyword.Build-in Function.Build-in Constants.Build-in Types.Build-in Exception这四个方面,其实在看的时候发现整个<The Python Standard Library>章节都是很不错的,其中描述了很多不错的主题.先把Build-in Function罗列一下吧,初学者的了解,分类可能不准确,一起交流. 一.数学运

  • Python文件操作及内置函数flush原理解析

    1.打开文件得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 示例文件 '你好呀' 我是于超 嗯 再见 文件操作基本流程 f=open('chenli',encoding='utf-8') first_line=f.readline() print('第一行是:',first_line) print('我是分割线'.center(9,'-')) #9代表字符串总共9长度 data=f.read() #读取所有内容 print(data) #不指定打开编码,即python解释

  • python enumerate内置函数用法总结

    这篇文章主要介绍了python enumerate内置函数用法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 enumerate()说明 enumerate()是python的内置函数 enumerate在字典上是枚举.列举的意思 对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值 enumerate多用于在for循环中得到计数 例如对于一个seq,得到:

  • python中str内置函数用法总结

    大家在使用python的过程中,应该在敲代码的时候经常遇到str内置函数,为了防止大家搞混,本文整理归纳了str内置函数.1字符串查找类:find.index:2.字符串判断类:islower.isalpha:3.内容判断类:tartswith.endswith:4.操作类函数:format.strip.join. 1.字符串查找类:find.index find和index均是查找字符串中是否包含一个子串: 二者的区别是index找不到字符串会报错,而find会返回-1: rfind.lfin

  • Python 内置函数速查表一览

    如下所示: 函数 功能 abs(x) 返回一个数的绝对值. 参数可以是一个整数或浮点数. 如果参数是一个复数,则返回它的模. all(iterable) 如果 iterable 的所有元素为真(或迭代器为空),返回 True any(iterable) 如果 iterable 的任一元素为真则返回 True. 如果迭代器为空,返回 False ascii(object) 返回一个表示对象的字符串 bin(x) 将一个整数转变为一个前缀为"0b"的二进制字符串 bool([x]) 返回一

  • Python使用内置函数setattr设置对象的属性值

    英文文档: setattr(object, name, value) This is the counterpart of getattr(). The arguments are an object, a string and an arbitrary value. The string may name an existing attribute or a new attribute. The function assigns the value to the attribute, prov

  • Python面向对象之内置函数相关知识总结

    Python内置函数 1. classmethod.staticmethod.property . 上述三个内置函数在文章(Python进阶--面向对象之成员)的方法和属性中已经详细介绍使用,可以返回浏览,具体地址: 2. callable,是否可在后面加括号执行. 函数 def func(): pass print( callable(func) ) # True 类 class Foo(object): pass print( callable(Foo) ) # True 类中具有__cal

  • 详谈Python基础之内置函数和递归

    一.内置函数 下面简单介绍几个: 1.abs() 求绝对值 2.all() 如果 iterable 的所有元素都为真(或者如果可迭代为空),则返回 True 3.any() 如果 iterable 的任何元素为真,则返回 True.如果iterable为空,则返回 False 4.callable() 如果 object 参数出现可调,则返回 True,否则返回 False 5.divmod() 以两个(非复数)数字作为参数,并在使用整数除法时返回由商和余数组成的一对数字.对于混合操作数类型,二

  • Python面向对象之成员相关知识总结

    1.成员 1.1 变量 实例变量,属于对象,每个对象中各自维护自己的数据. 类变量,属于类,可以被所有对象共享,一般用于给对象提供公共数据(类似于全局变量). class Person(object): country = "中国" def __init__(self, name, age): self.name = name self.age = age def show(self): # message = "{}-{}-{}".format(Person.co

  • Python学习之内置函数总结

    目录 常用函数 abs 函数 演示 all 函数 演示 enumerate 函数 演示 input 函数 演示 isinstance 函数 演示 vars 函数 演示 hasattr 函数 演示 setattr 函数 演示 getattr 函数 演示 any 函数 演示 前面的一些章节我们学习了 python 的一些常用的 内置包.内置模块 与 第三方包.第三方模块.今天的章节我们来总结一下 python 中常用的 内置函数,这里可能包括我们之前学习过的和未学习过的.我们一同进行一下简单的介绍.

  • python基础之内置函数

    https://docs.python.org/3/library/function.html #python官方网址 # 取绝对值 print(abs(-34)) # 取参数的近似值,精度与版本有关 print(round(3.66)) # 求次方 print(3**5) print(pow(3,5)) #求3的5次方 # max求最大值 print(max([23,123,13455,14664345,243565])) # eval 执行表达式 a,b,c=1,2,3 print('动态执

  • Python面向对象编程基础解析(二)

    Python最近挺火呀,比鹿晗薛之谦还要火,当然是在程序员之间.下面我们看看有关Python的相关内容. 上一篇文章我们已经介绍了部分Python面向对象编程基础的知识,大家可以参阅:Python面向对象编程基础解析(一),接下来,我们看看另一篇. 封装 1.为什么要封装? 封装就是要把数据属性和方法的具体实现细节隐藏起来,只提供一个接口.封装可以不用关心对象是如何构建的,其实在面向对象中,封装其实是最考验水平的 2.封装包括数据的封装和函数的封装,数据的封装是为了保护隐私,函数的封装是为了隔离

  • 深入讲解Python中面向对象编程的相关知识

    Python从第一天开始就是面向对象的语言.正因为如此,创建和使用类和对象是非常地容易.本章将帮助您在使用Python面向对象编程的技术方面所有提高. 如果没有任何以往面向对象(OO)的编程的经验,那么可能要了解一些基本的入门课程就可以了,或者至少某种形式的教程,让你有了解基本概念. 但是,这里会比较少地介绍面向对象编程(OOP): OOP术语概述 类: 用户定义的原型对象,它定义了一套描述类的任何对象的属性.属性是数据成员(类变量和实例变量)和方法,通过点符号访问. 类变量:这是一个类的所有实

  • Python基础教程之内置函数locals()和globals()用法分析

    本文实例讲述了Python基础教程之内置函数locals()和globals()用法.分享给大家供大家参考,具体如下: 1. 这两个函数主要提供,基于字典的访问局部变量和全局变量的方式. python 使用叫做名字空间的东西来记录变量的轨迹.名字空间是一个字典 ,它的键就是字符串形式的变量名字,它的值就是变量的实际值. 名字空间可以像 Python 的 dictionary 一样进行访问. 在一个 Python 程序中的任何一个地方,都存在几个可用的名字空间. 每个函数都有着自已的名字空间,叫做

  • Python面向对象之类的内置attr属性示例

    本文实例讲述了Python面向对象之类的内置attr属性.分享给大家供大家参考,具体如下: 这个比较简单. 代码示例: # -*- coding:utf-8 -*- #! python3 class Foo: x = 1; def __init__(self,y): self.y = y; def __getattr__(self,item): print('----->from getattr:你找的属性不存在') def __setattr__(self, key, value): prin

  • 简单谈谈Python面向对象的相关知识

    一.私有化 上篇说过封装,既将我们不想让别人看到代码的内容,但是又需要用到的内容,通过类内部调用来实现调用. 说到这里却不得不提一下上篇的: class Person(object): def __init__(self, name, age): self.xxx = name self.xxxx = age 这里面self后面的名字,是可以自己随意命名的,上一篇和后面一样只是为了好记忆罢了 只要你记得住,便是颠倒也是无事 1.1 属性私有化 何为属性私有? 举个例子便是:你的私房钱,你的手机电

随机推荐