-
不想访问 类内 和 实例内 的变量,用静态方法
-
只想访问类内变量,不想访问实例变量,用类方法
-
即要访问内变量,也想访问实例变量用实例方法
-
函数与静态方法相同,只是静态方式的作用域定义在类内
实例方法:
语法:
class 类名(继承列表):
def 实例方法名(self, 参数1, 参数2, ...):
'文档字符串'
语句
作用:
用于描述一个对象的行为,让此类型的全部对象都拥有相同的行为
说明:
1. 实例方法实质是函数,是定义在类内的函数
2. 实例方法至少有一个形参有,第一个形参代表调用这个方法的实例,一般命名为 'self'
示例:
# # 此示例示意实例方法的创建和调用 class Dog: '''这是一种小动物的定义 此类动物有吃(eat)的行为: ''' def eat(self, food): '''此方法用来描述小狗吃的行为''' print("小狗正在吃:", food) def sleep(self, hour): print("小狗睡了%d小时" % hour) def play(self, obj): print("小狗正在玩:", obj) dog1 = Dog() # 调用构造函数创建一个实例对象 再用dog1变量绑定 dog1.eat('骨头') dog1.sleep(1) dog1.play('球') dog2 = Dog() # 创建另一个实例对象 dog2.eat('包子') dog2.sleep(3) dog2.play('飞盘')
类方法 @classmethod
类方法是用于描述类的行为的方法,类方法属于类,不属于类的实例
说明:
类方法需要使用@classmethod装饰器定义
类方法至少有一个形参,第一个形参用于绑定类,约定写为'cls'
类和该类的实例都可以调用类方法
类方法不能访问此类创建的实例的属性
示例:
# 此示例示意类方法的使用 class A: v = 0 @classmethod def get_v(cls): # cls 用来绑定调用此方法的类 return cls.v # 访问类变量 @classmethod def set_v(cls, value): cls.v = value print(A.get_v()) # 0 A.set_v(100) print(A.get_v()) # 100 a1 = A() # 创建实例 print("a1.get_v() =", a1.get_v()) # 100 a1.set_v(200) print("a1.get_v() =", a1.get_v()) # 200 print('A.get_v() =', A.get_v())
静态方法 @staticmethod
静态方法是定义在类内部的函数,此函数的作用域是类的内部
说明:
静态方法需要使用 @staticmethod装饰器定义
静态方法与普通函数定义相同,不需要传入self实例参数和cls参数
静态方法只能凭借该类或类创建的实例调用
静态方法不能访问类变量和实例变量(属性)
示例:
#示意静态方法创建与调用 class A: @staticmethod def myadd(a, b): return a + b print(A.myadd(100, 200)) # 300 a = A() # 创建实例 print(a.myadd(300, 400)) # 700