Python 类方法,对象方法,对象属性、类属性

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))
	# 绑定类方法(静态方法)
	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))

测试结果:

猜你喜欢

转载自blog.csdn.net/benpaodelulu_guajian/article/details/81672498
今日推荐