class PythonClass():
""" 挂件的说明文档 """
def __init__(self):
# 成员属性(成员变量)
self.name = '这是 成员变量 Name'
# 类属性(类变量)
# 类变量可被此类的所有对象访问 、修改
# 只能 使用类 修改 类变量的值
# 用做数据共享
name = '这是 类变量 Name'
age = '这是 类变量 age'
# 绑定类方法(对象方法、普通方法)
def pL(self):
print('-1-普通方法 访问 成员属性(成员变量):{}'.format(self.name))
print('-2-普通方法 访问 类属性:{}'.format(__class__.name))
print('-3-普通方法 访问 不存在的成员属性,但是 存在同名的 类属性:{} 结果可知,此时就会访问 类属性'.format(self.age))
print('--- start ----')
self.name = '修改后的 成员变量'
print('-4-普通方法 修改 成员属性:{}'.format(self.name))
print('--- end ----')
__class__.name = '修改后的 类变量'
print('-5-普通方法 修改 类属性:{}'.format(__class__.name))
# 注 意 :
# 绑定方法(类函数? 我不太清楚这个改怎么称呼,这个在类中不常见, 类中一般是三中方法,对象方法,绑定类方法@classmethod,静态方法@staticmethod)
def sL():
print('-6-类函数 访问 类变量:{}'.format(__class__.name))
print('--- start ----')
try:
print('-7-类函数 访问 成员变量:{}'.format(self.name)) # 会报错
except Exception as e:
print('-8-类函数 不可访问 对象的 成员变量')
print('--- end ----')
#测试开始:
print('====== 对象和类 调用 普通方法、类函数 测试开始 ======')
# 类的实例化对象
l = PythonClass()
# 对象 调用 普通方法
l.pL()
# 对象 调用 类函数
try:
l.sL()
except Exception as e:
print('-9-对象 不能 访问 类函数(绑定类方法) ')
# 类 调用类函数
PythonClass.sL()
# 类 调用普通方法
try:
PythonClass.pL()
except Exception as e:
print('-10-类 不能调用 普通方法 报错self未定义 除非是把类的对象当做实参传进去(还不如直接用对象调用)')
print()
print()
#测试开始:
print('====== 对象和类 调用 成员变量和类变量 测试开始 ======')
print('1.对象 访问 成员变量 : {}'.format(l.name))
print('2.对象 访问 类变量 : {}'.format(l.__class__.name))
print('3.对象 访问 不存在的 成员变量 ,但是 存在同名 类变量 : {}'.format(l.age))
print('--- start ----')
try:
l.__class__.name = '对象 修改后的 新 类变量'
print('4.对象 修改 类变量 : {}'.format(l.__class__.name))
except Exception as e:
print('5.对象 不能 修改 类变量')
print('--- end ----')
print('--- start ----')
l.name = '对象 修改后的 新 对象变量'
print('6.对象 修改 对象变量 : {}'.format(l.name))
print('--- end ----')
print('7.类 不能 访问 对象的成员变量')
print('--- start ----')
PythonClass.age = '类 修改后的 新 类变量 age'
print('9.类 修改 类变量 : {}'.format(PythonClass.age))
测试结果:
总结
- 对象 可以调用普通方法
- 普通方法可以修改 类和对象 的变量
- 对象 不能调用类函数
- 类 不能调用普通方法(非要调用,就传对象)
- 类 不能访问对象的变量
- 类 可以修改类变量
- 类函数可以访问、修改类变量
- 类函数不可访问 对象的 成员变量
- 关于类函数的相关测试,各位先忽略,因为在别人的代码中,类里好像没有这个函数。如果有人知道这个到底叫什么,希望留言告知,谢谢