标签:绑定 *** 静态 title 一个 形式 tween 使用 没有
title: 方法
date: 2018-4-5
categories:
通过实例调用方法,称之为方法绑定在实例上。
就是常规的形式。比如:
class Person(object):
def foo(self):
pass
如果要调用 Person.foo()方法,必须:
pp = Person() #实例化
pp.foo()
使用 super 函数
(略)
一般类的方法的第一个参数必须是 self,并且如果要调用类的方法,要通过类的实例,即方法绑定实例后才能由实例调用。如果不能绑定,一般在继承关系的类之间,可以用 super 函数等方法调用。
# -*- coding: utf-8 -*-
__metaclass__ = type
class StaticMethod:
@staticmethod #表示下面的方法是静态方法
def foo(): #不需要self
print(‘This is static method foo()‘)
class ClassMethod:
@classmethod #表示下面的方法是类方法
def doo(cls): #必须要有cls这个参数
print(‘This is class method doo()‘)
print(‘doo() is part of class:‘, cls.__name__)
if __name__ == ‘__main__‘:
static_foo = StaticMethod()
static_foo.foo() #访问实例的方法
StaticMethod.foo() #通过类访问类的方法
print(‘*******************‘)
class_doo = ClassMethod()
class_doo.doo() #访问实例的方法
ClassMethod.doo() #通过类访问类的方法
输出结果:
This is static method foo()
This is static method foo()
*******************
This is class method doo()
doo() is part of class: ClassMethod
This is class method doo()
doo() is part of class: ClassMethod
用@staticmethod
声明
静态方法也是方法,所以依然用 def 语句类定义。需要注意的是该方法后面的括号内没有 self,也正是这样才叫它静态方法。
静态方法无法访问实例变量、类和实例的属性,因为它们都是借助 self 来传递数据的。
用@classmethod
声明
类方法,区别也是在参数上。类方法的参数也没有 self,但是必须有 cls 这个参数。
在类方法中,能够访问类属性,但是不能访问实例属性。
与一般方法的区别:
静态方法和类方法都可以通过实例来调用,即绑定实例。
也可以通过类来调用,即 类名.方法名()
这样的形式。
而一般方法必须通过绑定实例调用。
更多关于静态方法和类方法的讲解可以参考以下文章:
标签:绑定 *** 静态 title 一个 形式 tween 使用 没有
原文地址:https://www.cnblogs.com/id88/p/14210846.html