#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/10/26 16:44 # @author : hezefan # @file : 8.3.py '''类的重写''' ##子类想要调用父类的init,怎么办,init初始化的重写需要特殊方法super,回到调用父类的init,也会调用自己的重写 ##子类的一般方法会顶替掉父类 ##采用这种方法的时候,父类必须调用object class parent(object): name='parent' age=100 def __init__(self): print('my name is parent') def get_name(self): return self.name def get_age(self): return self.age class child(parent): def __init__(self): super(child, self).__init__() print('my name is child') def hello(self): print('hello child') a=child() a.hello() print(a.get_name())
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/10/28 12:00 # @author : hezefan # @file : 8.4.py '''类的私有变量和私有方法''' ##当变量格式为“_x”一个下划线的时候,只允许自己以及子类来调用 ##当变量格式为“__x”两个下划线的时候,只可以被自己的方法来调用 class A(object): _name='hezefan' __sex='M' def hello(self): print(self._name) print(self.__sex) def get_sex(self): print(self.__sex) a=A() print(a._name) #print(a.__sex) ##会报错 print(a.get_sex()) ##这种方法就会打印出来 a.hello() ##hello函数同样调用了双下划线,但是调用成功了,这是自己的内部函数,可以调用 print(dir(a)) ##查看实例化类a的方法 print(a.__doc__)##类的文档字符串 print(a.__class__) print(a.__dict__) #查看类的属性(包含一个字典,由类的属性组成) print(a.__bases__)