#FileName:classMethod.py
#类、实例及其它对象的内建方法
#定义三个类Parent,Child,gc
class Parent:
arr = 1000
ls = ['Hello','Python','World']
def __init__(self):
print('Calling parent’s Constructor')
def foo(self):
print('Parent_____foo')
class Child(Parent):
def __init__(self):
super(Child,self).__init__()
print('Calling Child’s Constructor')
def foo(self):
print('Child_____foo')
class gc(Child):
def __init__(self):
super(gc,self).__init__()
print('Calling gc’s Constructor')
def foo(self):
print('gc_____foo')
#使用gc构建对象实例
g = gc()
#1、内建函数issubcalss(sub,sup):判断sub是否是sup的子类
print('issubclass(gc,Parent) = ',issubclass(gc,Parent))
print('issubclass(gc,Child) = ',issubclass(gc,Child))
#2、内建函数isinstance(obj1,obj2):obj1是obj2的一个实例
print('isinstance(g,Child) = ',isinstance(g,Child))
print()
#类属性的特性针对继承也使用(子类的修改类属性似于通过实例修改类属性的方式)
print('类继承:通过子类修改父类的类属性')
gc.arr = 10000
print(gc.arr) #10000
print(Parent.arr) #1000
gc.ls.pop(1)
print(gc.ls)
print(Parent.ls)
print(g.ls)
#3、内建函数hasattr(obj,arr):判断obj是否存在属性arr
print('hasattr(gc,\'arr\') == ',hasattr(gc,'arr'))
#其它内建函数
#getattr(obj,arr):获取实例obj的属性arr的值,如果不存在值,则返回AttrbuteError异常,类似于obj.attr
#setattr(obj,attr,val):设置实例obj属性attr的值为val,类似于:obj.attr = val
#delattr(obj,attr):从实例obj中删除属性attr,类似于del obj.attr
#vars(obj = None):返回obj的属性以及其值的一个字典,如果没有给出obj(类名):显示局部名字空间字典(属性及值),类似于locals()
print(vars(gc))
print(vars())
print(locals())