数据成员是指在类中定义的变量,即属性,根据定义位置,又可以分为类属性和实例属性。
类属性定义在方法前面。
定义类属性,非全局变量
class MyClass:
#global c
c = 10 ## 类属性
def my_function(self):
global qw
qw = 9
print('this is my function')
def call_my_function(self):
global qw,c
print('calling my function')
self.my_function()
p=5
print(p)
MyClass.y = 6
print(MyClass.y)
print(qw)
print(MyClass.c) ##能输出
print(c) ## 未定义
ww = MyClass()
ww.call_my_function()
输出结果:
NameError: name ‘c’ is not defined
定义全局变量,非类属性
class MyClass:
global c
c = 10
def my_function(self):
global qw
qw = 9
print('this is my function')
def call_my_function(self):
global qw,c
print('calling my function')
self.my_function()
p=5
print(p)
MyClass.y = 6
print(MyClass.y)
print(qw)
print(c)
print(MyClass.c)
ww = MyClass()
ww.call_my_function()
报错:
AttributeError: type object ‘MyClass’ has no attribute ‘c’
因此,变量在类方法外面,要么为类属性,要么为全局变量。如果在方法外面未通过global声明为全局变量,则自动变为类属性
如下,b为类属性