一:局部变量
函数内部的变量名如果第一次出现,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量,局部变量只能在作用域内使用,也就是函数内部使用
二:全局变量
在模块中使用,其在函数和类的外面定义的定义的变量。如果函数中没有定于相同变量名的局部变量,则在函数中使用的该变量是全局变量。全局变量可以在全局的作用域使用
三:类变量
定义在类内,但不在方法和函数内,类变量也称为静态变量。类变量顾名思议是所以该类的实例所共有的,也是类内所以方法所共有的。
类内访问格式:类名.类变量 或者self.类变量(不建议后面这种,因为后面这种的访问形式已经默认将类类变量转为实例变量了)
四:实例变量
顾名思义只能为这个实例使用,不能给其他实例使用。定义在方法中的变量,用 self 绑定到实例上,只作用于当前实例的类。
类内访问格式:self.实例变量
类外访问格式:实例名.实例变量
五:self介绍:
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。虽然你可以给这个参数任何名称,但是 强烈建议 你使用self这个名称。
class Name(): def add(self,a,b): return a+b a=Name() a.add('zhang','yu')这里定义是一个name类的实例,然后在调用add()方法,但是只传入两个参数。实际上此时self的作用就是等价于传入add(a,'zhang','yu').此时方法中所以self将是实例化的对象。
六:类方法
第一个参数必须传入默认类,也就是cls。前面必须加@classmethod修饰
七:静态方法
与普通函数和格式一样,没有指定参数,与普通函数的区别就是静态方法定义在类内的。前面加@staticmethod修饰
八:类方法
最常见的方法就是实例方法,必须传入参数self。
实例如下:
import numpy as np
globalVariable1=10
globalVariable2=20
globalVariable3=30
class AAA():
one="我是静态变量(或者叫类变量),可以被类和实例调用" #在类内,在类的方法外,在类的实例化对象中是公用的,可以属于所以实例进行使用
def __init__(self):
self.two="hello,world" #在类的方法内
self.one="类变量当实例变量使用,此时已经屏蔽掉类变量就像是局部变量屏蔽全局变量一样"
def foo(self):
there="我是局部变量,只能在局部作用域中使用"
self.there="我是实例变量,只能被实例调用不能被类调用,在类内访问形式是self.实例变量" #类的实例变量表示只属于这个实例
global globalVariable1 #globals申明下,此处使用的是全局变量
globalVariable1=100
globalVariable2=200 #当只有全局变量,又有局部变量时,局部变量屏蔽全局变量
a=globalVariable3+300 #当只有全局变量时,函数内使用全局变量值
print('globalVariable1',globalVariable1)
print('globalVariable2=',globalVariable2)
print('a=',a)
print(there)
print('AAA.one=',AAA.one) #类内使用类变量是类名.类变量
def add(self,a,b):
return a+b
@staticmethod #静态方法
def staticmethod(): #参数无要求
print("我是静态方法")
@classmethod
def classmethod(cls): #参数一般为cls
print("我是类方法")
a=AAA()
print(a.one) #由于在类外使用类的实例.实例变量,所以此时one是实例变量使用
print(AAA.one) #类外用类名.类的变量 访问类变量
print(a.two)
print(a.foo())
print(a.there) #在类外部,用 实例名.实例变量 的形式访问实例变量。
结果如下:
类变量当实例变量使用,此时已经屏蔽掉类变量就像是局部变量屏蔽全局变量一样
我是静态变量(或者叫类变量),可以被类和实例调用
hello,world
globalVariable1 100
globalVariable2= 200
a= 330
我是局部变量,只能在局部作用域中使用
AAA.one= 我是静态变量(或者叫类变量),可以被类和实例调用
None
我是实例变量,只能被实例调用不能被类调用,在类内访问形式是self.实例变量