python学习笔记(五)——静态方法、类方法、运算符重载
我们都知道类名是不能够直接调用类方法的。在C++中,把成员方法声明为 static 静态方法后可以通过类名调用。同样的在python中也可以通过定义静态方法的方式让类名直接调用。
静态方法
使用 @staticmethod 后紧跟着的方法为静态方法。
class test:
var = 10
@staticmethod
def func():
print("var = ",test.var)
ts=test() #实例化
ts.func() #使用对象调用静态方法
test.func() #使用类名调用静态方法
输出:
var = 10
var = 10
在静态方法的参数列表中没有 self ,也就意味着它不可以调用我们类中的实例属性和实例方法。但是可以通过我们的类名调用类属性。
类方法
使用 @classmethod 后面紧跟着的方法为类方法。同样,类方法也支持类名访问和实例访问。
class test:
var = 10
@classmethod
def mytest(cls): # cls 代表类名
print("这是类方法")
ts=test() #实例化
ts.mytest() #使用对象调用类方法
test.mytest() #使用类名调用类方法
输出:
这是类方法
这是类方法
在类方法的参数列表中 cls 是类名的代表,也就是说,在类方法中可以调用静态方法和类属性。
class test:
@staticmethod
def func():
print("这是静态方法")
@classmethod
def mytest(cls):
print("这是类方法")
test.func()
ts=test()
ts.mytest()
test.mytest()
输出:
这是类方法
这是静态方法
这是类方法
这是静态方法
并且,由于静态方法是全局的,也是可以调用类方法的。
运算符重载
在python中形如 __xxx__ 的方法不需要我们手动调用,在运行至条件发生时会自动调用。比如我们的 __init__ 或 __del__ 等。
我们现在重载 “+” 运算,使其对象相加只加年龄,那么就可以这么写。
class test:
def __init__(self, name, age):
self.name = name
self.age = age
def __add__(self, other): #重载
return self.age + other.age
ts1 = test("张三",18)
ts2 = test("李四",20)
age = ts1 + ts2
print(age)
输出:
38
在 python 中调用 print() 打印实例对象时会调用__str__(),输出一些信息。如果__str__()中有返回值,就会打印其中的返回值。
ts = test("张三",18)
print(ts)
输出:
<__main__.test object at 0x00000272E61C35F8>
我们现在重载 str 使得调用print() 时输出我们想要的信息。实例名 + 类型。
class test:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return '名字是%s,类型是%s'%(self.name,type(self))
ts = test("张三",18)
print(ts)
输出:
名字是张三,类型是<class '__main__.test'>
python学习笔记(五)——静态方法、类方法、运算符重载的更多相关文章
- C#学习笔记_13_静态类&Sealed&运算符重载&抽象类
13_静态类&Sealed&运算符重载&抽象类 静态类 由static修饰的类就是静态类 特点: 静态类不能实例化对象 静态类中不允许写非静态的成员 静态类只能由一个父类Obj ...
- Python学习笔记五
一. 递归 递归函数: def a (): print ("from b") b() def b(): print("from a ") a() a() 递推和 ...
- python学习笔记(五):装饰器、生成器、内置函数、json
一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里 ...
- Python学习笔记 - day3 - 数据类型及运算符
Python的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...
- python学习笔记五 模块上(基础篇)
模块学习 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...
- python学习笔记(五)、抽象
不知不觉已经快毕业一年了,想想2018年过的可真舒适!!!社会就像一锅水,不同地方温度不同,2018年的我就身处温水中,没有一丝想要进取之心. 1 抽象 抽象在程序中可谓是神来之笔,辣么什么是抽象呢? ...
- python学习笔记五——数据结构
4 . python的数据结构 数据结构是用来存储数据的逻辑结构,合理使用数据结构才能编写出优秀的代码.python提供的几种内置数据结构——元组.列表.字典和序列.内置数据结构是Python语言的精 ...
- Python学习笔记五:错误与异常
一:常见异常与错误 BaseException 所有异常的基类SystemExit 解释器请求退出KeyboardInterrupt 用户中断执行(通常是输入^C)Exception 常规错误的基类S ...
- Python学习笔记五(读取提取写入文件)
#Python打开读取一个文件内容,然后写入一个新的文件中,并对某些字段进行提取,写入新的字段的脚本,与大家共同学习. import os import re def get_filelist(dir ...
- Python学习笔记(五)函数和代码复用
函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...
随机推荐
- Activity通过bundle传递数据
从AActivity.java向BActivity.java传递数据: 建立AActivity.java文件建立bundle: 1 public class AActivity extends App ...
- Qt:lambda表达式
说明 c11之后加入了lambda表达式,所以Qt也支持 加载项 CONFIG += c++11 用法 [ capture ] ( parameters ) mutable -> return_ ...
- Excel:替换表格中的0值
替换时需要勾选"单元格匹配",否则会把所有单元格中的0字符都给替换掉
- 根据文件url,下载文件到本地
/// <summary> /// 根据文件url,下载文件到本地 /// </summary> /// <param name="fileUrl"& ...
- vue项目npm run dev报错events.js:160 throw er; // Unhandled 'error' event listen EADDRINUSE :::8002
出错情况,如下图: 报错原因: listen EADDRINUSE :::8002 意思是当前8002端口被占用 解决办法: 一:简单粗暴:关掉可能影响的相关程序,重新执行启动. 二: 1.Win+R ...
- One-Hot编码(转)
机器学习:数据预处理之独热编码(One-Hot) 前言 ---------------------------------------- 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女 ...
- App测试如何进行?手机app测试要点
手机APP测试,主要针对的是android和ios两大主流操作系统,主要考虑的就是功能性.兼容性.稳定性.易用性(也就是人机交互).性能. 手机APP测试前的准备: 1.使用同类型的产品,不仅仅是使用 ...
- feign服务中调用,传递token
默认spring-boot 微服务中 用feign来做服务间调用,是不会携带token传递的.为了能让服务间调用的时候带上token,需要进行配置,增强resTemplate 1.先实现请求拦截器 ...
- svelte组件:Svelte3自定义Navbar+Tabbr组件|svelte自定义插件
基于Svelte3自定义组件Navbar+Tabbar沉浸式导航条|底部凸起菜单栏 Svelte 一种全新的构建用户界面的框架.当下热门的 Vue 和 React 在浏览器中需要做大量的工作,而 Sv ...
- 初识——HTTP3
目录 初识--HTTP3 HTTP HTTP1.0和HTTP1.1的主要区别 HTTP2 HTTP3 相关链接 初识--HTTP3 想了解HTTP3??那我们就得先知道为啥会出现HTTP3,因此我们需 ...