python类的类属性与实例属性

python类的类属性与实例属性有如下4种初始化方法:

#python programing facing object

class Test:
    #count=3                                    #方法1:作为类属性初始化

    def __init__(self):
        self.count=10                           #方法2:作为实例属性,在构造函数中初始化
        Test2.count=5                           #方法3:作为类属性,在构造函数中初始化

    #Test2.count=5
    #self.count=30
    count=3                                     #方法1:作为类属性初始化

a=Test()
a.newcount=4                                    #方法4:作为自定义属性(class attribute)

方法1,该语句在class-suite中的位置无关紧要,实例化过程中该语句总是在init之前被执行,执行方式为:Test.count保持前值,self.count=Test.count。若为类的首次实例化,则前值为类体中的初始化值3。待方法1的语句执行完毕,才会进入init函数体执行“方法2、3”对应的赋值语句。再之后才算完成了本次实例化过程。

在没有方法1的语句时,方法2、3,不论二者顺序如何,每次实例化都会先执行Test.count=5,self.count=Test.count。之后才会寻找并执行self.count自己的初始化语句。即是说,如果类体中没有self.count的初始化语句,则其可由Test.count的初始化语句衍生;反之不然,类体中无Test.count初始化语句时,self.count必须靠自己的初始化语句实现初始化。

若类体中没有Test.count初始化语句则类外不能直接引用Test.count; 若类体中同时不具有Test.count与self.count的初始化,则类体外不能直接引用Test.count和a.count。只要类体中有Test.count的初始化语句,则类体外二者都可以直接引用。

方法4提供了类外无法直接引用的数据被类的实例引用的途径。之前必须先进行初始化。例如在方法4的位置上有Test.newcount=1,则之后Test.newcount可用了。

自定义属性可以是类属性,也可以是实例属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值