Python面向对象之内置函数相关知识总结
程序员文章站
2022-03-17 19:39:47
python内置函数1. classmethod、staticmethod、property 。上述三个内置函数在文章(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内置函数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
下一篇: XMind思维导图怎么在局域网共享?
推荐阅读
-
深入讲解Python中面向对象编程的相关知识
-
Python3 与 C# 面向对象之~异常相关
-
python 之 前端开发( JavaScript变量、数据类型、内置对象、运算符、流程控制、函数)
-
python3 第二十六章 - 内置函数之Number相关
-
前端笔记知识点整合之JavaScript面向对象(一)Object&函数上下文&构造函数&原型链
-
Python基础总结之第八天开始【while循环以及for循环,循环嵌套等循环相关的知识点】(新手可相互督促)
-
Python: 学习系列之六:对象的内置函数
-
面向对象编程相关知识总结(类和对象)
-
C++知识点总结(面向对象5-const成员, 拷贝构造函数)
-
python中面向对象相关知识点(全面总结笔记)