Beginning Python - Chapter6 : More Abstraction

来源:互联网 发布:药品数据 编辑:程序博客网 时间:2024/06/14 08:55

#Chapter5:more abstraction

#1 The magic of objects
# polymorphism means having multiple forms.
# encapsulation
# inheritance

#2 making your own classes
class Person:
    def setName(self,name):
        self.name=name
    def setPrint(self):
        print "hello, %s " % self.name
c1 = Person()
c1.setName('lili')
c1.setPrint()

#3 attributes,fuctions,and methods
class Class:
    def method(self): #must have self, distinguish with function
        print "self"
def function():
    print 'function'
instance = Class()
instance.method()
function()
function = instance.method
function()
#instance.method = function
#instance.method()

#4 privacy revisited
class Test:
    __name = 'lili'   #__ cannot be accessed ,same with method
    nameCopy = __name
    no=100
t = Test()
# print t.name wrong (Test instance has no attribute 'name')
print '-----'
print t._Test__name # way to access private data(method)
print t.no
print t.nameCopy

#5 the class namespace
# inter param exists in one namespace,can be kept
class Test:
    num = 1
    num1 = 2
    def init(self): #attention self,must use self
        self.num +=2
        self.num1*=2
        return self.num,self.num1
t1 = Test()
t2 = Test()
print t1.init(),t1.num1 #3,4
print t1.init(),t1.num1 #5,8
print t2.init(),t2.num1 #3,4
print t2.init(),t2.num1 #5,8

#6 specifying a superclass
class super1:
    def init(self):
        print "-super"
    def copy(self):
        print "-copy-super1"
class sub1(super1):
    def copy(self):
        print "-copy-sub1"

s = sub1()
s.init()    #-copy-super1
s.copy()    #-copy-sub1

#7 investigating inheritance

# -- issubclass(sub,super)
# find out whether a class is a subclass of another
print issubclass(sub1,super1)   #True
print issubclass(Test,super1)   #False

# -- __bases__
# find out its base calsses
print sub1.__bases__ #(<class __main__.super1 at 0x015BF538>,)
print super1.__bases__ #()

# -- isinstance(instance,class)
print isinstance(s,sub1)    #True
print isinstance(s,super1)  #True
print isinstance(s,Test)    #False

#8 mutiple superclasses
class super1:
    pass
class super2:
    pass
class sub(super1,super2):
    pass

#9 Interfaces and Introspection
# waiting P181
# interface

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我刮到别人的车怎么办 新车被刮了漆怎么办 停车擦到别人车怎么办 骑自行车被汽车撞了怎么办 车停在小区被刮怎么办 机动车被自行车撞了怎么办 单车撞小车后被起诉怎么办 给小车撞到电动单车怎么办 车停在路边被自行车撞怎么办 撞了碰瓷的人怎么办 谷丙转氨酶46该怎么办 渣土车开飞机了怎么办 自己车撞自己车怎么办 撞了人没钱赔怎么办 闯红灯扣了6分怎么办 开共享汽车闯红灯了怎么办 新手如果不小心闯红灯怎么办 红绿灯左转车道直行了怎么办 跟着大车后面闯了红灯怎么办 宝宝私处好红怎么办呢 甲亢难怀孕怎么办才好 怀孕8周查出甲亢怎么办 电动车被交警拖走了怎么办 电动车车被城管拖走了怎么办 12123地理反编码失败怎么办 苹果手机地理反编码失败怎么办 城管执法过程被打怎么办 老婆看不起老公不让碰怎么办 老婆总不让碰该怎么办 机动车扣满12分怎么办 吊车吊运货物失控应该怎么办 车辆违章扣6分怎么办 最新交通法扣满12分怎么办 违章停车单丢了怎么办 违停告知单掉了怎么办 违章停车扣3分怎么办 驾驶证被扣12分怎么办 被贴条了条丢了怎么办 车停路边连续几天被贴条怎么办 车停在路边限号怎么办 违停的罚单丢了怎么办