python的方法VSjava方法
java 类方法和实例方法
类方法
用static修饰的方法。 由于类方法是属于整个类的,所以类方法的方法体中不能有与类的对象有关的内容。
即类方法体有如下限制:
1.类方法中不能引用对象变量;
2.类方法中不能调用类的对象方法;
3.在类方法中不能调使用super,this关键字;
4.类方法不能被覆盖。
实例方法
当一个类创建了一个对象后,这个对象就可以调用该类的方法(对象方法)。 1.实例方法中可以引用对象变量,也可以引用类变量;
2.实例方法中可以调用类方法;
3.对象方法中可以使用super,this关键字。
区别和注意事项
区别:类方法可以通过类名调用,实例方法不能通过类名调用
当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址
当该类创建对象后,类中的实例方法才分配入口地址,
从而实例方法可以被类创建的任何对象调用执行。 类方法在该类被加载到内存时,就分配了相应的入口地址。
从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。
类方法的入口地址直到程序退出时才被取消。 注意:
当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址。
也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。 在Java语言中,类中的类方法不可以操作实例变量,也不可以调用实例方法,
这是因为在类创建对象之前,实例成员变量还没有分配内存,而且实例方法也没有入口地址。
在java中静态方法就是类方法
import java.util.*;
public class TestStatic {
public static void main(String[]args){
System.out.println(S.getStatic());//使用类名加前缀访问静态方法
S s=new S();
System.out.println(s.getStatic());//使用实例化对象名访问静态方法
System.out.println(s.get());
}
public static class S
{
private static int a;
private int t=0;
//静态初始器:由static和{}组成,只在类装载的时候(第一次使用类的时候)执行一次,往往用来初始化静态变量。
static{
a=10;
}
//静态方法只能访问静态数据成员
public static int getStatic()
{
return a;
}
public int getT()
{
return t;
}
//非静态方法可以访问静态方法和非静态方法
public int get()
{
getT();
getStatic();
t=a;//非静态方法可以访问非静态数据成员和静态数据成员
return t;
}
}
}
python 类方法 实例方法 静态方法
在python用到两个装饰器 @classmethod和@staticmethod用来表示类方法和静态方法
classmethod:它的用法是定义操作类,而不是操作实例的方法。classmethod改变了调用方法的方式,因此此类低一个参数是类本身(cls),而不是实例(self)。classmethod方法最常见的用途是定义定义备选的构造方法

frombytes的return 使用参数cls构建了新实例 cls(*memv)。按照约定来类方法的第一个参数应该是cls但是python并不介意怎么命名
staticmethod装饰器也会改变调用方式,但是第一个参数不是特殊的值。其实静态方法就是普通的函数,只是碰巧在类定义体内部,而不是定义在模块层。
class Demo:
@classmethod
def klassmethod(cls):
print("这是classmethod")
pass
@staticmethod
def statmethod():
print("这是statmethod")
pass Demo.klassmethod()
Demo.statmethod()
这是classmethod
这是statmethod
class Demo:
@classmethod
def klassmethod(*args):
return args
@staticmethod
def statmethod(*args):
return args print(Demo.klassmethod())
print(Demo.statmethod()) # (<class '__main__.Demo'>,)
# () print(Demo.klassmethod(12))
print(Demo.statmethod(12))
# (<class '__main__.Demo'>, 12)
# (12,)

python的方法VSjava方法的更多相关文章
- python 类属性与方法
Python 类属性与方法 标签(空格分隔): Python Python的访问限制 Python支持面向对象,其对属性的权限控制通过属性名来实现,如果一个属性有双下划线开头(__),该属性就无法被外 ...
- Python执行系统命令的方法 os.system(),os.popen(),commands
os.popen():用python执行shell的命令,并且返回了结果,括号中是写shell命令 Python执行系统命令的方法: https://my.oschina.net/renwofei42 ...
- python 调用 shell 命令方法
python调用shell命令方法 1.os.system(cmd) 缺点:不能获取返回值 2.os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等 ...
- python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异
1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html 1.__init__() 创建对 ...
- python 字典内置方法get应用
python字典内置方法get应用,如果我们需要获取字典值的话,我们有两种方法,一个是通过dict['key'],另外一个就是dict.get()方法. 今天给大家分享的就是字典的get()方法. 这 ...
- Python中的 isdigit()方法
Python isdigit()方法 sdigit()方法就是检测字符串是否只有数字组成, 如果字符串中是只有数字组成,则返回true, 如果字符串中有其他字符,则返回false. 语法格式是: s ...
- [转] python程序的调试方法
qi09 原文 python程序的调试方法 本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程序 源码例子 例如,有模拟税收计算的程序: #!/usr/bin/python de ...
- Python prettytable的使用方法
Python prettytable的使用方法 prettytable可以整齐地输出一个表格信息: +-----------+------+------------+----------------- ...
- Python多线程及其使用方法
[Python之旅]第六篇(三):Python多线程及其使用方法 python 多线程 多线程使用方法 GIL 摘要: 1.Python中的多线程 执行一个程序,即在操作系统中开启了一个进 ...
随机推荐
- 【Python】【demo实验9】【练习实例】【三数排序】
原题: 输入三个整数x,y,z,请把这三个数由小到大输出. 我的解法: #!/usr/bin/python # encoding=utf-8 # -*- coding: UTF-8 -*- # 输入三 ...
- python调用hanlp进行命名实体识别
本文分享自 6丁一的猫 的博客,主要是python调用hanlp进行命名实体识别的方法介绍.以下为分享的全文. 1.python与jdk版本位数一致 2.pip install jpype1(pyth ...
- Oracle 中 decode 函数用法(字段A,B, C,A不为空则取A,否则取B,B为空则取C)
–decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值) SELECT DECODE(TEMP.SCORE, ‘A’, ‘90-100’, ‘B’, ‘80-89’, ‘C’, ...
- PAT B1028 人口普查(20)
课本AC代码 #include <cstdio> struct person { char name[10]; int yy, mm, dd; } oldest, youngest, le ...
- CSS float和position属性
1. 浮动 CSS float属性定义了元素在水平方向的浮动.该元素从网页的正常流动(文档流)中移除,对于浮动元素后的块级元素,块级元素将会被浮动元素覆盖,并且会接着其上一个文档流中的元素,按文档流的 ...
- Linux命令-文件管理篇-cat
1.cat 说明 cat 是一个文本文件查看和连接工具.查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名. 2.使用权限 所有使用者 <!-- more --> 3.ca ...
- ZOOKEEPER之WATCHER简介
zookeeper通过watcher机制,可以实现数据的修改,删除等情况的监听 可以设置观察的操作:exists,getChildren,getData 可以触发观察的操作:create,delete ...
- SNI功能在NetScaler上的实现
SNI功能在NetScaler上的实现 来源 https://raynorli.com/2018/09/11/sni-on-netscaler/ 现网中经常是一台主机上运行多个Web站点,如果启用了 ...
- 09 Python之IO多路复用
四种常见IO模型 阻塞IO(blocking IO).非阻塞IO(nonblocking IO).IO多路复用(IOmultiplexing).异步IO(asynchronous IO) IO发生时涉 ...
- js之常用正则
//用户名正则,4到16位(字母,数字,下划线,减号) let uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //密码强度正则,最少6位,包括至少1个大写字母,1个小写字母, ...