python基础篇--Class(类)

class(类)
特点:一个抽象的对象,是面向对象语言的核心,类可以不继承或多继承。
标识:class
例子:
class A(object):
    """
    这是一个演示的类
    """
    COUNT_A = []

    def __init__(self, a):
        self.a = a
        self.COUNT_A.append(1)

    def str(self):
        print 'COUNT_A:%s, list_a:%s' % (self.COUNT_A, self.a)

访问类:
my_a = A(123)
my_a.str()
print my_a.__doc__

# 输出结果
# COUNT_A:[1], list_a:123
#
#   这是一个演示的类

详解:
COUNT_A: 类A的类变量(全局变量),可以通过A.COUNT_A或my_a.COUNT_A来访问,生命周期为类A;
a: 为类A的成员变量,可以通过my_a.a访问,生命周期为实例my_a。
my_a.___doc__:类的说明注析
在类中以双下划线(__)开头的变量是私有变量(实例是不允许a.__host直接访问的),以双下划线(__)开头的方法可能是python自带函数。

类继承:
class A(object):
    """
    这是一个演示的类A
    """
    COUNT_A = []

    def __init__(self, a):
        self.a = a
        self.COUNT_A.append(1)

    def str(self):
        print 'COUNT_A:%s, list_a:%s' % (self.COUNT_A, self.a)


class B(A):
    """
    这是一个演示类B,继承了类A
    """
    def __init__(self, b):
        super(B, self).__init__(b)      # 初始化父类
        self.b = b

    def str(self):
        print 'COUNT_A:%s, list_a:%s' % (self.COUNT_A, self.a)

my_a = A(123)
my_a.str()

my_b = B(234)
my_b.str()

# 输出结果
# COUNT_A:[1], list_a:123
# COUNT_A:[1, 1], list_a:234

详解:
super(B, self).__init__(b):# python新用法所建议的初始胡父类用法
my_b.str类中:继承了A的COUNT_A和a。
问题:
COUNT_A:[1, 1]竟然是有两个值?
原因:
因为COUNT_A为A类的成员变量(全局变量),并且COUNT_A是一个列表(经测试如果全局变量为一个int类型的,输出结果则为默认值,这可能跟python各类型的存储使用有关, 字符,元组,数字是不可以更改的对象,列表和字典都是指针
注意 当一个类继承了两个或多个类的时候, super(B, self).__init__(b)只会初始化class B(A, C)中的A

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值