赞
踩
方法 | 定义 | 调用 |
---|---|---|
实例方法 | 第一个参数必须是实例对象,一般约定为 “self”,通过它来传递实例的属性和方法(也可以传递类的属性和方法) | 只能由实例对象调用 |
类方法 | 第一个参数必须是类对象,一般约定为 “cls”,通过它来传递类的属性和方法(不能传实例的属性和方法) | 实例对象 和 类对象 都可以调用 |
静态方法 | 参数随意,但无法传递 类和实例 的任何属性和方法 | 实例对象 和 类对象 都可以调用 |
静态方法的特别说明:
1.方法体中不使用 “实例对象 和 类对象” 中的任何属性和方法
2. 静态方法主要是用来存放逻辑性代码,逻辑上属于类,但是和类本身没有关系,
也就是说在静态方法中,不会涉及到类中的属性和方法的操作(独立的:便于使用和运维)
class Person(object): # 类属性 sex = '女' # 构造方法:每个类都有,名称固定为 __init__,声明类时自动执行 def __init__(self, name, age): self.name = name # 实例属性 self.age = age print("这是 构造方法...\n") # 实例方法(又称:普通方法) def instance_method(self): print("instance_method:") print(self.name) # 传递 实例属性 print(self.age) print(self.sex) # 传递 类属性 if __name__ == '__main__': p = Person("李四", 20) # 实例方法的调用:只能由 实例对象 调用,不能用 类对象 调用 p.instance_method() # Person.instance_method() # 报错
class Person(object): # 类属性 sex = '女' # 构造方法:每个类都有,名称固定为 __init__,声明类时自动执行 def __init__(self, name, age): self.name = name # 实例属性 self.age = age print("这是 构造方法...\n") # 类方法:可传递 类的属性和方法,但不能传递 实例的属性和方法 @classmethod def class_method(cls): print("class_method:") # print(cls.name) # 传递 实例属性 报错 # print(cls.age) print(cls.sex) # 传递 类属性 if __name__ == '__main__': p = Person("李四", 20) # 类方法的调用:实例对象 和 类对象 均可 p.class_method() Person.class_method()
输出结果:
这是 构造方法...
fun_class:
女
fun_class:
女
import time class Person(object): # 类属性 sex = '女' # 构造方法:每个类都有,名称固定为 __init__,声明类时自动执行 def __init__(self, name, age): self.name = name # 实例属性 self.age = age print("这是 构造方法...\n") # 静态方法:无法传递 类和实例 的任何属性和方法 @staticmethod def static_method(): print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())) # self.name # 报错 # cls.sex # 报错 if __name__ == '__main__': p = Person("李四", 20) # 静态方法调用:实例对象 和 类对象 均可 p.static_method() Person.static_method()
执行结果:
这是 构造方法...
2023-09-28 17:45:01
2023-09-28 17:45:01
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。