python类的重写和私有变量

1.类的私有变量:

class A(object):
_name='ling'
__sex='F'
def hello(self):
print(self._name)


通过在属性变量名前加上双下划线定义属性为私有属性;
1._XX以单下划线开头的表示的是protected类型的变量,
即保护类型只能允许其本身与子类进行访问。
若内部变量标示,如:当使用"from M import"时,
不会将以一个下划线开头的对象引入;

2.__XX双下划线的表示的是私有类型的变量。只能允许
这个类本身进行访问了,连子类也不可以用于命名
一个类属性(类变量),调用时名字被改变

3.__XX__定义的是特列方法.


python内置类属性:
__dict__:类的属性(包含一个字典,由类的数据属性组成)
__doc__:类的文档字符串

 

2.类的重写

class parent(object):
    name = 'parent'
    sex = 'F'
    coller = 'yellow'
    language = 'chinese'
    def __init__(self):
        print 'my name is {0}'.format(self.name)
    def get_sex(self):
        return self.name
a = parent()
a.get_sex()
print '#'*15
 
class child(object):
    name = 'child'
    coller = 'yellow'
    def __init__(self):
        print 'my name is {0}'.format(self.name)
    def get_coller(self):
        return self.coller
b = child()
print b.get_coller()
print '#'*15
 
class grandson(parent,child):
    name = 'grandson'
    def __init__(self):
        print 'my name is {0}'.format(self.name)
    def get_coller(self):
        return self.coller
    def get_language(self):
        return self.language
#类的重写,只需要重新定义变量,直接打印
    def get_name(self):
        print 'my name is xiaoming'
c = grandson()
print c.get_coller()
print c.get_language()
c.get_name()
 
tips:
__init__ 是每个类的默认方法,如果子类想继承父类的__init__ 方法,需要用supper(子类,self)。子类把父类方法重写的时候,会默认忽略父类中的 return
格式:子类想继承__init__
supper(子类名称,self).__init__(有参数就跟参数)
print '$$$$$$$ '   //使用supper函数,会忽略父类中的return,直接执行子类中 
                              supper下的一些方法逻辑,所以直接用print 打出来
 
格式: 子类想继承父类中的其他方法
supper(子类名称,self).父类中的方法    //没参数就跟父类中的方法名
print '#######'     // 使用supper函数,会忽略父类中的return

 

posted on 2017-11-08 06:37  阿文闲聊  阅读(723)  评论(0编辑  收藏  举报