您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:Python面向对象之内置函数相关知识总结

51自学网 2021-10-30 22:26:44
  python
这篇教程Python面向对象之内置函数相关知识总结写得很实用,希望能帮到您。

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))  # Trueprint(issubclass(Foo, Top))   # True

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

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


Python绘图之turtle库的基础语法使用
Python面向对象之成员相关知识总结
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。