python中的类

http://python.jobbole.com/82297/
https://www.cnblogs.com/vipchenwei/p/7126772.html
https://www.cnblogs.com/wilber2013/p/4677412.html
http://my.oschina.net/jhao104/blog/682322
https://blog.csdn.net/brucewong0516/article/details/79121179

单划线_ 相当于受保护属性
双划线__ 相当于私有属性

class A(object):
    a = 1
    _b = 2
    __c = 3
    def __init__(self):
        self.__private()
        self.public()
        self.d = 4
        self._e = 5
        self.__f = 6
 
    def __private(self):
        print( 'A.__private()')
 
    def public(self):
        print ('A.public()')
        
    def _protect(self):
        print('A._protect')
 
class B(A):
    def __private(self):
        print( 'B.__private()')
 
    def public(self):
        print ('B.public()')
        
    def _protect(self):
        print('B._protect')
 
a = A()    
b = B()

print(dir(A))
print(dir(a))
print(dir(B))
print(dir(b))
输出简写了,只写了在类中出现的属性和方法,以便分析。
A.__private()
A.public()
A.__private()
B.public()
['_A__c', '_A__private',  '_b', '_protect', 'a', 'public']
['_A__c', '_A__f', '_A__private', '_b', '_e', '_protect', 'a', 'd', 'public']
['_A__c', '_A__private', '_B__private',  '_b', '_protect', 'a', 'public']
['_A__c', '_A__f', '_A__private', '_B__private',  '_b', '_e', '_protect', 'a', 'd', 'public']

总结:1 单划线和没加单划线是一样的,只不过提醒你,它可以改变但不要轻易改变
2 双划线的属性和方法,只是隐型在前加_A,
3 双划线以加_A在子类继承
4 在类外部访问私有属性,在前加_A就行,在类内部访问不需要,类内会隐形加上。
5 双下划线的另一个重要的目地是,避免子类对父类同名属性和方法的冲突

构造函数的继承

1.经典类的写法: 父类名称.init(self,参数1,参数2,…)
2. 新式类的写法:super(子类,self).init(参数1,参数2,…)

class Person(object):
 
    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.weight = 'weight'
 
    def talk(self):
        print("person is talking....")
 
 
class Chinese(Person):
 
    def __init__(self, name, age, language):  
        Person.__init__(self, name, age)  #继承父类的构造方法,也可以写成:super(Chinese,self).__init__(name,age)
        self.language = language    # 定义类的本身属性
 
    def walk(self):
        print('is walking...')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值