Python面向对象之内置函数相关知识总结
作者:华青水上 发布时间:2022-06-05 10:30:24
标签: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)) # True
print(issubclass(Foo, Top)) # True
至此,关于面向对象的一些内置函数已经总结完毕,如有不当之处,欢迎指正!
来源:https://blog.csdn.net/r1141207831/article/details/117911058
0
投稿
猜你喜欢
- 一、怎么样取得最新版本的MySQL?要安装MySQL,首先要当然要取得它的最新版本,虽然大家都知道在FreeBSD的Packages中可以找
- 具体代码如下所示:import numpy as npfrom matplotlib import pyplot as pltfrom sc
- 和之前C++执行Linux Bash命令的方法 一样,Python依然支持system调用和popen()函数来执行linux bash命令
- 在ASP.NET2.0通过SMTP的验证发送EMAIL ,代码如下:’Create a new MailMes
- 一、Python urllib 模块是什么urllib 模块是 Python 标准库,其价值在于抓取网络上的 URL 资源,入门爬
- 表单验证是WEB开发中经常遇到的问题,我们以前常见的做法是:在客户端对表单域进行内容的检查,看是否是满足一定的要求或满足一定的结构,比如:是
- 大家经常在网上登陆的时候经常会看到让你输入验证码,有的是文字的,有的呢是图片,比如chinaren.com校友录中留言的时候,我们就会看到数
- PHP mysqli_thread_id() 函数返回当前连接的线程 ID,然后杀死连接:<?php// 假定数据库用户名:root,
- 这是由十几位视觉设计师设计的挂历,每个月份都是不同的风格,就像每个月都有不同温度和心情一样,思维跳跃性很大,可以作为挂历设计参考。当然,如果
- 一个用asp来处理jmail发信的过程,及使用方法. 发信时,直接调用这个过程就行了,很方便。<% dim
- 要很好地领会Ajax技术的关键是了解超文本传输协议(HTTP),该协议用来传输网页、图像以及因特网上在浏览器与服务器间传输的其他类型文件。只
- 微软上周发布了一份关于 Windows Internet Explorer 8 浏览器(以下简称为 IE 8)性能优化的白皮书《Window
- CSS3的box-shadow属性可以让我们轻松实现图层阴影效果。我们来实战详解一下这个属性。1. box-shadow属性的浏览器兼容性先
- 最近在处理词向量这块,因为平时习惯把处理的词向量保存成文件,但是txt文件读取出来的都是string格式的数字,有必要转成float型上网查
- 1.建表代码如下:-- Create table create table test ( dm1 char(3), dm2 char(3),
- #!/usr/bin/env python# -*- coding:utf-8 -*-#导入random和string模块import ra
- 但是如果在utf-8编码下,一个汉字是占3个字符长度的,比如字符串$str=”你好啊!!”; 如果你用strlen函数来判断,长度是11,正
- 今天要给大家分享的是一款自己写的屏保程序,大学大家最头疼的就是四六级的考试了,上次考试做阅读的时候,情不自禁的发呆,想着如果我能在电脑上写一
- 0.环境说明win10 64bit,电脑也是64bit的处理器,电脑装有vs2010 64bit,但是为了保险起见,只试验了32位的安装,等
- Python encode()方法encode() 方法为字符串类型(str)提供的方法,用于将 str 类型转换成 bytes 类型,这个