数据成员是指在类中定义的变量,即属性,根据定义位置,又可以分为类属性和实例属性。
类属性定义在方法前面。
定义类属性,非全局变量
class MyClass:#global cc = 10 ## 类属性def my_function(self):global qwqw = 9print('this is my function')def call_my_function(self):global qw,cprint('calling my function')self.my_function()p=5print(p)MyClass.y = 6print(MyClass.y)print(qw)print(MyClass.c) ##能输出print(c) ## 未定义ww = MyClass()
ww.call_my_function()
输出结果:
NameError: name ‘c’ is not defined
定义全局变量,非类属性
class MyClass:global cc = 10def my_function(self):global qwqw = 9print('this is my function')def call_my_function(self):global qw,cprint('calling my function')self.my_function()p=5print(p)MyClass.y = 6print(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为类属性