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):passobj = Foo()print( callable(obj) ) # True
【Python面向对象之内置函数相关知识总结】所以当你以后在见到下面的情况时,首先就要想到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 = https://www.it610.com/article/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 = https://www.it610.com/article/info.get("age") print(value)
4. type,获取一个对象的类型。
v1 = "华青水上"result = type(v1)print(result) #
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:passfor 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))# Trueprint(issubclass(Foo, Top))# True
至此,关于面向对象的一些内置函数已经总结完毕,如有不当之处,欢迎指正!
到此这篇关于Python面向对象之内置函数相关知识总结的文章就介绍到这了,更多相关Python内置函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 布丽吉特,人生绝对的赢家
- 进必趋|进必趋 退必迟,问起对 视勿移
- 对称加密和非对称加密的区别
- python学习之|python学习之 实现QQ自动发送消息
- 对抗抑郁最好的方法
- 逻辑回归的理解与python示例
- 装聋作哑,关系融洽
- 社保代缴公司服务费包含哪些
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum