网站首页 > 技术文章 正文
类的定义
class Name(object):
attr //成员
def func(self): //函数,第一个入参self必传
do
注:
- self是函数中的必传参数,且必须放在第一个参数的位置
- self是一个对象,它代表实例化的变量自身
- self可以直接通过点来定义一个类变量。self.name = 't'
- self中的变量与含有self参数的函数可以在类中的任何一个函数内随意调用
- 非函数中定义的变量在定义时不用self
使用示例
class Person(object):
name = None
def say(self):
print(f'{self.name} is saying')
per = Person() //类的实例化
print(per.name) // 通过实例化进行属性的调用
per.func(). // 通过实例化进行函数的调用
类的构造函数
构造函数:类中的一种默认函数,用来将类实例化的同时,将参数传入类中
def __init__(self,name):
self.name = name
类的私有属性(函数+变量)
- 无法被实例化后的对象调用类中的函数与变量
- 类内部可以调用私有函数与变量
- 只希望类内部业务调用使用,不希望被使用者调用
- 在变量或函数前添加__(2个下划线),变量或函数名后边无需添加
装饰器
- 是一种函数,可以接受函数入参,可以返回函数
- 接收一个函数,内部对其处理,然后返回一个新的函数,动态的增强函数功能
- 将b函数在a函数中执行,在a函数中可以选择执行或不执行b函数,也可以对b函数进行加强处理
def out(func_args):
def inter(*args,**kwargs):
return func_args(*args,**kwargs)
return inter
//用法一
def c(name):
print(name)
out(c)('tom') //装饰器的用法
//用法二 @符号+装饰器函数放在被调用函数的上一行,
//被调用函数正常定义,调用时只需直接调用执行函数即可
@out
def c(name):
print(name)
c('tom')
常用装饰器
装饰器 | 功能 | 说明 |
classmethod | 将类函数可以不经过实例化而直接调用 | 用法: class Test(object): @classmethod def func(cls,...) do Test.func(...) 参数cls替代self,代表当前操作的是类 |
staticmethod | 将类函数可以不经过实例化而直接被调用,被修饰的调用函数不许传递cls或self参数,且无法在该函数内调用其他类函数或类变量 | 用法: class Test(object): @staticmethod def add(a,b): return a+b Test.add(1,2) |
property | 把类函数执行的时候去掉括号,就跟调用属性差不多 | class Test(object): @property def add(): print('add') test = Test() test.add |
类的继承
- 子类拥有父类的所有属性和方法
- 父类不具备子类自有的属性和方法
- 定义子类时,将父类传入子类参数内
- 子类实例化可以调用本身与父类函数与变量,父类无法调用子类的函数和方法
- 多态:子类中重写父类方法
- 多重继承:将被继承的类依次放入子类参数位中,用逗号隔开。如:class Child(P1,P2,..)
- super函数:调用父类的方法
class Parent(object):
def think(self)
print('think')
class Child(Parent):
def run():
print('run')
//super用法
class p(object):
def __init__(self):
print('parent')
class c(p):
def __init__(self):
print('child')
super(Child,self).__init__()
类的内置函数
函数名 | 功能 | 说明 |
__str__ | 在print当前实例化对象时,返回该函数的返回值 | 用法:def __str__(self): return str_type 示例: class Test(object): def __str__(self): return 'test' test = Test() print(test) |
__getattr__ | 当调用属性或方法不存在时,会返回该方法定义的信息 | 用法: def __getattr__(self,key): print('getattr') 示例: class Test(object): def __getattr__(self,key): print('{} not exist'.format(key)) test = Test() t.name |
__setattr__ | 拦截当前类中不存在的属性和值 | 用法: def __setattr__(self,key,value): print('setattr') 示例: class Test(object): def __setattr__(self,key,value): if key not in self.__dict__: self.__dict__[key] = value test = Test() t.name='test' |
__call__ | 本质是将一个类变成一个函数 | 用法: def __call__(self,*args,**kwargs): print('call') 示例: class Test(object): def __call__(self,**kwargs): print(**kwargs) test = Test() t(name='test') |
猜你喜欢
- 2025-05-23 Python中type()函数的深度探索:类型检查与动态类创建
- 2025-05-23 C++调用动态库两种方式和Python调用C++动态库
- 2025-05-23 在 Python 中实现延迟调用
- 2025-05-23 python 简单几句代码调用摄像头
- 2025-05-23 Python中class对象/属性/方法/继承/多态/魔法方法详解
- 2025-05-23 Python提速神器
- 2025-05-23 「Python教程」第5篇 Python程序结构
- 2025-05-23 轻松掌握Python函数递归和调用
- 2025-05-23 Python 开发者必会的 5 个反射技巧
- 2025-05-23 Python静态方法@使用,类或函数调用之带括号、不带括号
- 06-24Python调用Docker API的使用方式(pycharm docker 调试)
- 06-24青少年Python编程系列28:Python中函数的递归调用
- 06-24python调用sqlite数据库案例(python 调用数据库)
- 06-24【Python机器学习系列】基于Flask来构建API调用机器学习模型服务
- 06-24通过pybind11来实现python调用C++接口(一)
- 06-24Python编程调用Deepseek API创建智能体
- 06-24python多装饰器针对函数、类、方法的调用顺序说明
- 06-24Python Qt GUI设计:Python调用UI文件的两种方法(基础篇—3)
- 270℃Python短文,Python中的嵌套条件语句(六)
- 268℃python笔记:for循环嵌套。end=""的作用,图形打印
- 266℃PythonNet:实现Python与.Net代码相互调用!
- 262℃Python实现字符串小写转大写并写入文件
- 261℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 121℃原来2025是完美的平方年,一起探索六种平方的算吧
- 101℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 95℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python调用Docker API的使用方式(pycharm docker 调试)
- 青少年Python编程系列28:Python中函数的递归调用
- python调用sqlite数据库案例(python 调用数据库)
- 【Python机器学习系列】基于Flask来构建API调用机器学习模型服务
- 通过pybind11来实现python调用C++接口(一)
- Python编程调用Deepseek API创建智能体
- python多装饰器针对函数、类、方法的调用顺序说明
- Python Qt GUI设计:Python调用UI文件的两种方法(基础篇—3)
- Python | Django 外部脚本调用 models 数据库
- 自学Python第九天——操作列表(python操作步骤)
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)