精华内容
下载资源
问答
  • Java中静态方法与非静态方法的区别

    千次阅读 2017-10-21 23:44:49
    静态方法与非静态方法之间的区别: (1)静态方法中只能调用静态成员或者静态方法,不能直接调用非静态成员或方法,如果需要调用,则需要先实例化; (2)静态方法是在类中使用staitc修饰的方法,在类定义的时候已经被...

    静态方法的结构:

    其中static关键字即表示静态的。声明静态方法的语法如下:
    <访问修饰符>static返回类型 方法名(参数列表)
    {//方法体}
    静态方法与非静态方法之间的区别:
    (1)静态方法中只能调用静态成员或者静态方法,不能直接调用非静态成员或方法,如果需要调用,则需要先实例化。

    (2)静态方法是在类中使用staitc修饰的方法,在类定义的时候已经被装载和分配。而非静态方法是不加static关键字的方法,在类定义时没有占用内存,非静态方法只有在类被实例化成对象时,对象调用该方法才被分配内存;
    (3)《Java编程思想》P86页有这样一段话:

      “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”

      这段话简而言之就是:静态方法可以方便在没有创建对象的情况下来进行调用(方法/变量);



    展开全文
  • python中实现静态方法和类方法...1、我们已经讨论了类/对象可以拥有像函数一样的方法,这些对象方法与函数的区别只是一个额外的self变量# -*- coding:utf-8 -*-#!/usr/bin/python# Filename: method.pyclass Person:...

    python中实现静态方法和类方法都是依赖于python的修饰器来实现的。 对象方法有self参数,类方法有cls参数,静态方法是不需要这些附加参数的。

    1、我们已经讨论了类/对象可以拥有像函数一样的方法,这些对象方法与函数的区别只是一个额外的self变量

    # -*- coding:utf-8 -*-

    #!/usr/bin/python

    # Filename: method.py

    class Person:

    grade=1

    def __init__(self,name):

    self.name = name

    def sayHi(self):#加self区别于普通函数

    print 'Hello, your name is?',self.name

    @staticmethod #声明静态,去掉则编译报错;还有静态方法不能访问类变量和实例变量

    def sayName():#使用了静态方法,则不能再使用self

    print "my name is king"#,grade,#self.name

    @classmethod #类方法

    def classMethod(cls):

    print("class method")

    p = Person("king")

    p.sayHi()

    p.sayName()

    p.classMethod()

    Person.classMethod()

    输出:

    Hello, your name is? king

    my name is king

    class method

    class method

    2、静态方法

    要在类中使用静态方法,需在类成员函数前面加上@staticmethod标记符,以表示下面的成员函数是静态函数。使用静态方法的好处是,不需要定义实例即可使用这个方法。另外,多个实例共享此静态方法。

    静态方法是一类特殊的方法,有时可能需要写一个属于这个类的方法,但是这些代码完全不会使用到实例对象本身,例如:

    class Student(object):

    @staticmethod

    def aver_age(x, y):

    return x + y

    def year(self):

    return self.aver_age(self.month, self.day)

    这个例子中,如果把aver_age作为非静态方法同样可以运行,但是它要提供self参数,而这个参数在方法中根本不会被使用到。这里的@staticmethod装饰器可以给我们带来一些好处,Python不再需要为Student对象实例初始化一个绑定方法,绑定方法同样是对象,但是创建需要成本,而静态方法可以避免这些。

    Student().year is Student().year

    Student().aver_age is Student().aver_age

    Student().aver_age is Student.aver_age

    False

    True

    True

    可读性更好的代码,看到@staticmethod我们就知道这个方法并不需要依赖对象本身的状态。

    可以在子类中被覆盖,如果是把aver_age作为模块的顶层函数,那么继承自Student的子类就没法改变Student的aver_age了如果不覆盖year的话。

    3、 类方法

    类方法与普通的成员函数和静态函数有不同之处,在接触的语言中好像也没见过这种语义,看它的定义:

    一个类方法就可以通过类或它的实例来调用的方法, 不管你是用类来调用这个方法还是类实例调用这个方法,该方法的第一个参数总是定义该方法的类对象。

    记住:方法的第一个参数都是类对象而不是实例对象.

    按照惯例,类方法的第一个形参被命名为 cls.任何时候定义类方法都不是必须的(类方法能实现的功能都可以通过定义一个普通函数来实现,只要这个函数接受一个类对象做为参数就可以了).

    class Dog(object):

    food = "gutou"

    age = "1"

    def __init__(self, name):

    self.NAME = name

    @classmethod

    def eat(self,age): #只能是类中的变量

    # print(self.NAME)

    print(age)

    print(self.food)

    @classmethod

    def eat1(self, age): # 只能是类中的变量

    # print(self.NAME)

    age = "2"

    self.food = "tang"

    @staticmethod

    def print_1():

    print(Dog.food, Dog.age)

    d = Dog("labuladuo")

    d.eat(Dog.age) #通过对象调用

    Dog.eat(Dog.age) #通过类调用

    print("-----1-----")

    d.eat1(Dog.age)

    Dog.print_1()

    print("--------2-------")

    Dog.eat1(Dog.age)

    Dog.print_1()

    输出:

    1

    gutou

    1

    gutou

    -----1-----

    ('tang', '1')

    --------2-------

    ('tang', '1')

    以上就是解析python 类方法、对象方法、静态方法的详细内容,更多关于python 类方法、对象方法、静态方法的资料请关注随便开发网其它相关文章!

    展开全文
  • 静态方法隐含了一个参数,这个参数是一个四位指向heap所在实例地址。 静态方法不存在这个参数
    非静态方法隐含了一个参数,这个参数是一个四位的指向heap所在实例的地址。
    非静态方法不存在这个参数。
    展开全文
  • 1.构造方法的作用:用于对类的初始化,如果你没有写任何的构造方法,系统会默认给你取一个无参的构造方法,如果写了含参数的构造方法,无参的方法需要自己添加,系统不会自动添加。所以好的习惯是无参有参的构造方法...

    构造方法
    1.构造方法的作用:用于对类的初始化,如果你没有写任何的构造方法,系统会默认给你取一个无参的构造方法,如果写了含参数的构造方法,无参的方法需要自己添加,系统不会自动添加。所以好的习惯是无参有参的构造方法都写。
    2.例子:

    Hello hello=new Hello();//这里调用的是无参的构造方法;
    Hello hello=new Hello(“hi”);//这里调用的是有参的构造方法;

    如果Hello类中已经有了一个有参数的构造方法,这时再使用 Hello hello = new Hello();来创建对象的时候就会出错,这就是为什么书上要强调写了有参数的构造方法就最好加一个无参数的构造方法.

    静态方法与非静态方法的区别
    1.静态方法是有static 关键字修饰的方法,在类被定义时已经被装载和分配了,而非静态方法在类定义时没有占内存,只有在类被实例化对象时,对象调用该方法才被分配内存。
    2.静态方法只能调用静态成员和静态方法,而非静态方法既可调用静态方法或成员又可调用非静态方法和成员。
    3.非静态成员只有被实例化之后才能被静态方法调用。

    展开全文
  • 参数模型和非参数模型的区别

    万次阅读 2015-03-01 15:17:57
    参数与非参数模型 用代数方程、微分方程、微分方程组以及传递函数等描述模型都是参数模型。建立参数模型就在于确定已知模型结构中各个参数。通过理论分析总是得出参数模型。非参数模型是直接或间接地从实际系统...
  • 实例方法 定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例属性和方法(也可以传类属性和方法); 调用:只能由实例对象调用。类方法 定义:使用装饰器@classmethod。第一个参数...
  • 2.重载是在同一个类中,两个方法的方法名相同,参数列表不同(参数类型、顺序、个数),方法返回值无关,可以有不同的修饰符 3.重写发生在父类和子类之间,子类继承父类方法(构造、final、static修饰的方法)并...
  • 这一区别的外在表现为实例方法内可使用this关键字代表所从属实例对象,而静态方法不可使用this因为静态方法不针对任何实例对象。实例对象调用静态方法会因参数中多出一个指向自己指针(this)而发生错误。 定义...
  • 方法重写与方法重载的区别

    千次阅读 2015-09-08 22:03:01
    (1)方法重写要求参数签名必须相同,而方法的重载要求参数签名必须不同。 (2)方法重写要求返回类型必须相同,而方法重载对此没有限制。 (3)方法重写只能用于子类重写父类的方法,而方法的重载用于同一个类的...
  • 方法重写(方法覆盖)与方法重载的区别 方法重写 也称为方法覆盖,子类重写的方法必须父类被重写的方法具有相同的方法名、参数列表和相同(或相容)的返回值类型,否则不构成重写 方法重写只针对实例方法,对于...
  • 什么是参数模型(LR)与非参数模型(SVM)? LR与SVM联系与区别: 联系: 1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进情况下可以处理多分类问题) 2、两个方法都可以增加不同正则...
  • 序号 参数 含义 1 原子性(Atomicity) 事务是数据库逻辑工作单位,它对数据库修改要么全部执行,要么全部不执行。 2 一致性(Consistemcy) 事务前后,数据库状态都满足所有完整性约束。 3 隔离性(Isolation) ...
  • 静态类普通类的区别有以下几点: 1)静态类无法实例化而普通类可以; 2)静态类只能从System.Object基类继承;普通可以继承其它任何static和sealed类,但也只能继承一个类; 3)静态类不能继承接口;普通类...
  • 静态类是不能实例化,我们直接使用它属性与方法,静态类最大特点就是共享。 静态类中所有成员必须是静态。 静态类可以有静态构造函数,静态构造函数不可继承。 静态构造函数可以用于静态类,也可用于...
  • 2、静态私有的方法 方法定义方式 1、参数的顺序、个数、类型至少有一个不同;2、返回值无关 1、参数必须相同;2、返回值必须相同 访问修饰符 无关 ...
  • 方法的定义: 修饰符 返回值类型 break(跳出switch,结束循环)和return(结束方法)的区别 方法名:注意规范----首写字母小写的驼峰规则 参数列表:(参数类型,参数名) 异常抛出:后续讲解 package ...
  • 1、readLines()方法与readLine()方法比较 readlines()方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python for... in ... 结构进行处理。如果碰到结束符 EOF 则返回空字符串。而readline()方法...
  • 四 classmethodstaticmethod的区别 五 练习 一 类中定义的函数分成两大类 一:绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入):  1. 绑定到类的方法:用classmethod装饰器装饰的方法。...
  • 注:方法的重载与方法的返回值无关! 构造器是可以重载的! 重写: (前提:在继承的基础之上,子类在获取了父类的结构以后,可以对父类中同名的方法进行“重构”) 方法的返回值,方法名,形叁列表形同;权限修饰符不小于...
  • 什么是组间差异检验?就是组间差异分析以及显著性检验,应用统计学上假设检验方法,检验组间是否有差异及其差异程度。坦率地讲,所有差异检验都基于一个假设:组...参数与非参数检验所以,本着负责态度,在...
  • 方法重写与方法重载异同: (1)相同点: a.都要求方法同名。 b.都可以用于抽象方法抽象方法之间。 (2)不同点: a.方法重写要求签名必须一致,而方法重载要求参数个数或者类型不同必须不一致。 b.方法...
  • 三 classmethod和staticmethod的区别 一 绑定方法 绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入):  1. 绑定到类的方法:用classmethod装饰器装饰的方法。 为类量身定制 类.boud_...
  • 【call()apply()的区别】在ECMAScript中每一个函数都是function类型(是javascript的基本引用类型)的实例,具有一定的属性和方法。call()和apply()则是这个function类型的实例的方法。每个函数都包含这两个继承...
  • 在js中每个函数都包含两个继承而来的方法:call()和apply()方法; call和apply作用都是在特定作用域中将函数绑定到另外一个对象上去运行,即可以用来重新定义函数执行环境,两者仅在定义参数方式上有所区别...
  • offsetTop和offsetHeight是设置一个元素的位置和获取圆度大小经常会使用的参数,下面具体讲一下他们的区别于联系: 例如obj为html的一个元素对象, obj.offsetTop指的是obj距离上方或者父级元素(positionstatic...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 854
精华内容 341
关键字:

参数方法与非参数方法的区别