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

 更新时间:2021年06月24日 14:37:13   作者:华青水上  
本次要总结的的内置函数共8个,他们都跟面向对象的知识相关,文中有非常详细的介绍及代码示例,需要的朋友可以参考下

Python内置函数

1. classmethod、staticmethod、property 。

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

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内置函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中列表添加的四种方法小结

    python中列表添加的四种方法小结

    这篇文章主要介绍了python中列表添加的四种方法小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • PyCharm Python Console中文输出乱码问题及解决

    PyCharm Python Console中文输出乱码问题及解决

    这篇文章主要介绍了PyCharm Python Console中文输出乱码问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Python排序算法实例代码

    Python排序算法实例代码

    这篇文章主要为大家详细介绍了Python实现排序算法的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Python进阶之迭代器与迭代器切片教程

    Python进阶之迭代器与迭代器切片教程

    迭代器是 Python 中独特的一种高级特性,而切片也是一种高级特性,两者相结合,会产生什么样的结果呢,需要的朋友可以参考下
    2020-01-01
  • Python 基于win32com客户端实现Excel操作的详细过程

    Python 基于win32com客户端实现Excel操作的详细过程

    这篇文章主要介绍了Python 基于win32com客户端实现Excel操作的详细过程,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Python检查判断一个数是不是另一个数的整数次幂实例深究

    Python检查判断一个数是不是另一个数的整数次幂实例深究

    在数学和计算中,确定一个数是否为另一个数的整数次幂是一个常见而重要的问题,例如,我们可能需要判断一个数是否是某个数的平方、立方或其他幂次,本文将探讨在Python中如何实现这一功能,通过数学方法和算法检查一个数是否是另一个数的整数次幂
    2023-12-12
  • 利用Python轻松解析XML文件

    利用Python轻松解析XML文件

    XML文件在数据处理和配置存储中非常常见,但手动解析它们可能会让人头疼,Python提供了多种简单高效的方法来处理XML文件,下面小编就来和大家详细介绍一下吧
    2025-04-04
  • Python flask返回中文乱码的解决方法分享

    Python flask返回中文乱码的解决方法分享

    有时使用flask返回数据会出现带有中文的时候会显示成乱码(ascii)的情况出现,所以本文为大家整理了一下解决的方法,需要的小伙伴可以参考一下
    2023-07-07
  • 利用Python发送 10 万个 http 请求

    利用Python发送 10 万个 http 请求

    这篇文章主要介绍了如何利用Python发送 10 万个 http 请求,下面我们讲利用Python写代码实现10 万个 url,对每个 url 发送 http 请求,并打印请求结果的状态码,需要的朋友可以参考一下
    2021-12-12
  • python PyVCF文件处理VCF文件格式实例详解

    python PyVCF文件处理VCF文件格式实例详解

    这篇文章主要为大家介绍了python PyVCF文件处理VCF文件格式实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07

最新评论