Python 类方法、实例方法、静态方法的使用与及实例
类方法
使用装饰器@classmethod 第一个参数必须是当前类对象,该参数名一般约定为“cls” (可修改但不建议)通过他来传递类的属性和方法(不能传实例的属性和方法)
调用:实例对象和类对象多可以调用
实例方法
第一个参数必须是实例对象,该参数名要为“self”通过他来传递实例的属性和方法(可传递类的属性和方法)
调用:实例对象调用
静态方法
普通函数就位于类定义的命名空间中,它不会对任何实例类型进行操作,需要使用装饰器@staticmethod定义静态方法
调用:类对象和实例都可以调用类方法
通过实例了解
class Book(object):
# 类属性
age = 23
def __init__(self,title,name='a'):
self.title = title
self.name = name
#类方法
@classmethod
def create(cls,title,x):
book = cls(title=title,name=x)
return book
# 静态方法
@staticmethod
def cx(x):
return x
def add(self):
print(self.title,self.name)
def lei(self):
# 实例访问类变量
print(self.__class__.age)
@classmethod
def lei2(cls):
# 类方法访问类变量
print(cls.age) # 实例化对象
book = Book("腾")
book.add() # 腾 a
# 改变实例属性
book.title="翁婿"
book.add() #翁婿 a
book.lei2() #
print(Book.age) #
#修改类属性
Book.age =55
print(Book.age)
# 类调用静态方法
print(Book.cx(3))
# 实例调用静态方法
print(book.cx(4))
Python 类方法、实例方法、静态方法的使用与及实例的更多相关文章
- python类方法、静态方法、实例方法例子
		类方法,静态方法,普通方法 #coding=utf-8 class Foo: def __init__(self,name): self.name=name d ... 
- python类方法和静态方法
		C++的静态方法是用static关键字,python j是没用static的. python中实现静态方法和类方法都是依赖于python的修饰器来实现的. class MyClass: def me ... 
- Python类方法、静态方法与实例方法
		静态方法是指类中无需实例参与即可调用的方法(不需要self参数),在调用过程中,无需将类实例化,直接在类之后使用.号运算符调用方法. 通常情况下,静态方法使用@staticmethod装饰器来声明. ... 
- Python类方法、静态方法与实例方法  -----类里面不需要实例化参数 和没带self的函数  调用此函数的方法
		来源: https://www.cnblogs.com/blackmatrix/p/5606364.html 静态方法是指类中无需实例参与即可调用的方法(不需要self参数),在调用过程中,无需将类实 ... 
- Classmethod and Staticmethod - Python 类方法 和 静态方法
		classmethod and staticmethod classmethod 的是一个参数是类对象 cls (本类,或者子类), 而不是实例对象 instance (普通方法). classmet ... 
- python类的实例方法\静态方法\类方法区别解析(附代码)
		前言 搞了好久python,一直搞得不太清楚这几种类的方法,今天花时间好好测试一下,算是弄懂点皮毛吧. 三种方法的不同 先剽窃个图看一下 可以看到,实例是三种方法都可以调用的,而类只可以调用两种.所以 ... 
- python中的实例方法、类方法、静态方法的区别
		Python 除了拥有实例方法外,还拥有静态方法和类方法,跟Java相比需要理解这个类方法的含义. class Foo(object): def test(self)://定义了实例方法 print( ... 
- python类:类方法和静态方法
		http://blog.csdn.net/pipisorry/article/details/49516185 面相对象程序设计中,类方法和静态方法是经常用到的两个术语.逻辑上讲:类方法是只能由类名调 ... 
- python之 类对象 类方法 实例对象 实例方法 静态方法
		实例对象1. 创建的时间:使用 类名()的时候,就创建一个实例对象2. 实例属性:怎样添加 只要是一个变量能够指向这个实例对象,那么这个变量.xxxx = 111就是给其添加一个实例属性 特点: 跟着 ... 
随机推荐
- 深入理解 Android 中的各种 Context
			前言 网上关于 Context 的文章也已经有不少了,比如值得参考的有: Android Context完全解析,你所不知道的Context的各种细节 Android Context 到底是什么? 但 ... 
- redis两种持久化方式RDB和AOF
			目录 前言 1. Redis 数据库结构 2. RDB 持久化 2.1. RDB 的创建和载入 2.1.1. 手动触发保存 SAVE 命令 BGSAVE 命令 SAVE 和 BGSAVE 的比较 2. ... 
- C# WPF 一个设计界面
			微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. C# WPF 一个设计界面 今天正月初三,大家在家呆着挺好,不要忘了自我充电. 武汉人民加油, ... 
- C#实现的一些常见时间格式
			string aa = DateTime.Now.ToShortDateString();//"2019/9/23" string bb = DateTime.Now.ToShor ... 
- 数据库自学笔记(2)--- HAVING和WHERE, ANY 和 ALL,IN和EXIST。
			1.HAVING和WHERE: WHERE 和 HAVING 的作用对象不一样.WHERE作用于基本表或视图,挑出满足条件的元组.HAVING作用于组(group),一般配合GROUP BY 使用. ... 
- 【54】目标检测之Bounding Box预测
			Bounding Box预测(Bounding box predictions) 在上一篇笔记中,你们学到了滑动窗口法的卷积实现,这个算法效率更高,但仍然存在问题,不能输出最精准的边界框.在这个笔记中 ... 
- 快速读写模板(int)
			一.快速读入模板(int) inline int read(int x){ char ch=getchar(); int x=0,f=1; while(ch>='9'||ch<='0'){ ... 
- navicate premium连接sqlserver时报08001错误的解决方法
			---恢复内容开始--- navicate premium连接sqlserver时报08001错误的解决方法 1.自己一直使用navicate连接sqlserver,但是自从自己的电脑安装了sqlse ... 
- windows下安装openjdk
			redhat版openjdk,解压后就能用,下载地址https://developers.redhat.com/products/openjdk/download. Azul Zulu版openjdk ... 
- WPF 释放嵌入资源
			资源文件名称:默认命名空间.文件名 || 默认命名空间.文件夹名.文件名 /// <summary> /// 提取文件 /// </summary> /// <param ... 
