Python面向对象之内置函数相关知识总结
作者:华青水上 时间:2022-06-05 10:30:24
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
至此,关于面向对象的一些内置函数已经总结完毕,如有不当之处,欢迎指正!
来源:https://blog.csdn.net/r1141207831/article/details/117911058
标签:Python,内置函数
0
投稿
猜你喜欢
python使用opencv对图像mask处理的方法
2021-05-03 03:23:19
Python2.5/2.6实用教程 入门基础篇
2021-12-22 20:25:58
python opencv圆、椭圆与任意多边形的绘制实例详解
2021-12-08 08:20:48
Django 大文件下载实现过程解析
2021-12-18 20:48:32
python 检测nginx服务邮件报警的脚本
2023-08-04 17:34:10
Javascript获取表单名称(name)的方法
2024-06-07 15:25:45
JS创建对象的写法示例
2024-04-16 08:54:48
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2022-10-25 04:37:23
Java匹配正则表达式汇总
2023-03-31 03:52:22
Django框架的使用教程路由请求响应的方法
2022-02-08 19:04:55
JS 显示当前日期+星期(静态)
2007-09-11 13:29:00
python安装numpy和pandas的方法步骤
2023-05-19 09:43:09
python使用matplotlib绘制折线图的示例代码
2021-06-25 22:51:18
百度编辑器复制微信图片无法保存
2023-08-14 17:32:46
require.js+vue开发微信上传图片组件
2024-06-05 15:31:01
十个简单好用的设计技巧[译]
2009-04-08 12:56:00
python字符串string的内置方法实例详解
2022-06-14 01:10:23
详解Python IO编程
2021-06-26 08:40:48
go程序员日常开发效率神器汇总
2024-02-16 23:04:40
深入理解go slice结构
2024-04-26 17:27:07