staticmethod
基本上和一个全局函数差不多,只不过可以通过类或类的实例对象(python里光说对象总是容易产生混淆,
因为什么都是对象,包括类,而实际上类实例对象才是对应静态语言中所谓对象的东西)来调用而已,
不会隐式地传入任何参数。这个和静态语言中的静态方法比较像。
classmethod
是和一个class相关的方法,可以通过类或类实例调用,并将该class对象(不是class的实例对象)隐式地
当作第一个参数传入。就这种方法可能会比较奇怪一点,不过只要你搞清楚了python里class也是个真实地
存在于内存中的对象,而不是静态语言中只存在于编译期间的类型。
正常的方法就是和一个类的实例对象相关的方法,通过类实例对象进行调用,并将该实例对象隐式地作为第一
个参数传入,这个也和其它语言比较像。
可如下示例:
#!/usr/bin/python
#coding:utf-8
#author: gavingeng
#date: 2011-12-03 10:50:01
class Person:
def __init__(self):
print "init"
@staticmethod
def sayHello(hello):
if not hello:
hello='hello'
print "i will sya %s" %hello
@classmethod
def introduce(clazz,hello):
clazz.sayHello(hello)
print "from introduce method"
def hello(self,hello):
self.sayHello(hello)
print "from hello method"
def main():
Person.sayHello("haha")
Person.introduce("hello world!")
#Person.hello("self.hello") #TypeError: unbound method hello() must be called with Person instance as first argument (got str instance instead)
print "*" * 20
p = Person()
p.sayHello("haha")
p.introduce("hello world!")
p.hello("self.hello")
if __name__=='__main__':
main()
output:
i will sya haha
i will sya hello world!
from introduce method
********************
init
i will sya haha
i will sya hello world!
from introduce method
i will sya self.hello
from hello method
分享到:
相关推荐
在Python中,我们有三种主要的方式来定义类的方法:普通方法(实例方法)、静态方法(staticmethod)和类方法(classmethod)。这些方法在不同的场景下有着各自的作用。 首先,普通方法(实例方法)是通过`self`...
在Python面向对象编程中,类方法和静态方法是两种特殊的方法,它们在使用上有各自的特点,同时也有别于实例方法。要了解类方法和静态方法,首先需要理解类属性和实例属性的概念。 类属性是属于类本身的属性,它被这...
Python中的类可以使用装饰器@classmethod和@staticmethod来定义类方法和静态方法。classmethod可以访问类的所有实例,而staticmethod不能访问类的实例。 3. 删除列表中的重复元素 可以使用set方法或fromkeys方法来...
4. 匿名函数功能受限,不适合复杂的逻辑,而普通函数能实现更复杂的功能。 程序题部分涉及文件操作和类的设计。例如,第一个程序题要求读取文件内容,通过特定规则(字母向前移动一位)加密后写入新文件。第二个...
在Python中,函数参数的传递实质上是引用的传递。这与C语言中的指针类似,但又有本质的区别。Python中所有变量都是对内存中某个对象的引用。 - **不可变对象与可变对象的区别** - 不可变对象包括字符串、元组和...
这不仅涵盖了属性的基本概念,还深入到了动态字典`__dict__`、属性访问机制以及实例与类之间的区别,这些都是Python编程中不可或缺的部分。 ### Python属性详解 #### 什么是属性? 在Python中,属性可以被理解为...
20. `staticmethod(), classmethod()`: 定义静态方法和类方法,这两者与普通方法的区别在于它们不接收隐含的第一个参数(self或cls)。 这只是Python内置函数的一部分,实际上还有更多功能丰富的函数等待探索。学习...
4. **Python 中 classmethod 和 staticmethod 的区别** `classmethod`和`staticmethod`都是修饰器,用于定义类方法。`classmethod`接收一个额外的参数`cls`,它是调用该方法的类的引用,可以用来访问类的属性和方法...
本篇文章将总结Python OOP类中的四种主要函数或方法:实例方法、静态方法、类方法以及普通函数。 1. **实例方法**: 实例方法是与类的实例紧密关联的函数,它们通过`self`参数接收调用该方法的实例。当通过实例...
它们类似于普通的函数,但属于类的一部分,可以在类内部方便地访问。 **定义:** ```python class MyClass: @staticmethod def static_method(): # 方法体 ``` **调用:** ```python MyClass.static_method() `...
- 静态方法:使用`@staticmethod`装饰器定义,不接收`self`或`cls`参数,与类或实例无关,更像是普通的函数。 5. **方法的绑定**: - 在Python中,方法在创建类实例时自动绑定。这意味着当你访问类的实例的某个...
它们就像是普通函数,只是被放在类的上下文中,便于组织代码和命名空间。例如,`A`中的`foo1`方法: ```python @staticmethod def foo1(name): print('hello', name, A.a) ``` `foo1`可以被类或实例直接调用,但...
5. `staticmethod()`: 将普通函数转换为静态方法,静态方法不接收隐含的 `self` 参数,与类实例无关。 6. `all()`: 接收一个可迭代对象,如果所有元素都为真(非零、非空),则返回True,否则返回False。 7. `any...
3. **静态方法**:不依赖于类的状态,可以当作普通的函数使用,但它必须通过类名调用。 - 示例: ```python class A: @staticmethod def static_foo(x): print("executing static_foo(%s)" % x) A.static_foo...
- 静态方法与类或实例无关,它们像普通函数一样工作,但作为类的一部分。 - 使用`@staticmethod`装饰器定义静态方法,如`@staticmethod def some_function()`。 10. **继承**: - Python支持多重继承,允许一个...
在Python中,函数分为三种类型:普通函数、实例方法、类方法和静态方法。 1. 普通函数(foo(x)):这类函数与类和实例无关,可以直接调用,如`foo(x)`。 2. 实例方法(foo(self, x)):在类中定义的方法需要一个...
- 静态方法:不需要实例也不需要类引用作为第一个参数,可以像普通函数一样被调用。静态方法通常用于执行不依赖于类实例的函数。 - 类方法:以类引用作为第一个参数(通常命名为cls)。类方法可以访问类的属性和其它...
- **静态方法**: 通过`@staticmethod`装饰器定义,既不绑定到类也不绑定到实例,可以当作普通函数使用。 例如: ```python class MyClass: @staticmethod def static_method(): pass @classmethod def class_...
静态方法是类中的一个普通函数,通常用于执行与类相关但不依赖于类属性的操作。 6. 方法继承和重写(Method Inheritance and Overriding): 继承是面向对象编程中的另一个重要概念,它允许创建一个类继承另一个类...