<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            Previous Page

            Up One Level

            Next Page

            Python ???

            Contents

            ????? 8. ??????? ????? Python ??? ??? 10. ????????


            ?????



             
            9.
            ??

            Python?????????????¦Ì???????????????????????????????????C++??Python's Modula-3?????Python?§Ö??????????????????�Ü???????????????????????????????????“???????”?????????????????????????????????????????§Ý?????????§µ??????????????override???????§Ö??¦Ê¦Ç??????????§á??????????§Ö????????????????????????????????§Ô????

            ??C++?????????????§Ö?????????????????????????????public????????§Ö?????????????????virtual???????Modula-3???????????????????????????????????shorthands?????????????????????????????????????????????????????????????????????????????????????¦Ã????????????????????????? This provides semantics for importing and renaming. ?????????C++????Modula-3????????????????????????????¨°?????????????????¡À????????????????????????‰^

             
            9.1
            ?§Û?????????

            ??????????????????????????Smalltalk??C++?§ß????§»??????????Modula-3?????????????????????C++?????Python?????????????????????????????

            ?????????????????????????????????????ÈÉ??Python??“????”?????????????????Python?§Ó??????§Ö?????????????????????????§»??????????????????????§»??????????????????????????????????C++??Modula-3????????Smalltalk?????????????Python????????????????????????????????????????§Õ?????“????”??

            ????????????????????????????????§µ?????????????????????????????§Ö???????????Python????????§Ý??????????????§»????????????????????????????ï‚?????????????????????????Python???????????????????????????????�p????????‰Í????????????????????????????????????????????????????????????????????§»????????????????íà????????????????????????????????????????????????????????????????????????????????????�£??????Pascal???????????????????????????

             
            9.2 Python
            ??????????????

            ?????????????????????§»?§Û?Python????????????????????????????????????????????????????????????????????????????????????????????§Ö????????¦Ê¦È??Python?????????????¨¢?

            ??????§»???âì???

            ??????????????????????????????????????????Python??????????????????????????????????????????????????????§á??????????????????????§»????????????????????????? abs() ????????????????????????????????§Ö???????????????????§Ö?????????????????????????????????????????????????????????????????????????????????????§Ö?????????¦Ê????????????????????????????????????“maximize”?????????????????????????????????????????????????

            ???????????Python???¦Ê????“.”????????????????????íà????z.real?§Ö?real?????z????????????????????????????????????????????????? modname.funcname?§µ?modname ??????????? funcname ???????????????????????????????§Ö????????????????????????????????????? 9.1

            ????????????????§Õ????????????¡ê???????????????????????????“modname.the_answer = 42”????§Õ?????????????del???????????»Ç“del modname.the_answer”??? modname?????????the_answer ?????

            ???????????????????????????§Ó??????????????????????????????????Python????????????????????????????????????????????????????úE?Œã??????????????????????????????????›Ô?????????????????????????????§Ö???????????????????§Ø?????????????????????__main__???????????????????????????????????????????????????????????????§µ?????????__builtin__????

            ?????????????????????????????????????????????????¦Ä????????????????????????????????????????§µ?????????????????????????????????

            ?????????Python???????????????????????“??????”????????¦Æ?????????????§Ö???????????????????¦Ç???

            ?????????????????ÈÉ?????????????????????????????????????????????????????????????????????????????????????????????—¨???????????????????????§Ó???????????????????????????????????????????????????????????????

            ??????????????????????????§Ö??????????????????????????????§Þ?????????????????????????????????????????????????

            ???????????????????????????????????????????????????????????????????????????????????????????????????????????§Ö?????????????

            ????????????????????????????????????§Ö???????????????????????????????????¨²???????????????????¦Ë????????????????????????—¨????????????????????????????????????——?????Python??????????????????§á???????????“????”????????????????????????????????????????????????????????

            Python????????????????�P????????????????????????????????????——??????????????????????????“del x ”?????????????????????????????x????????????????????????????????????????????????import?????????????????????????????????????????global??�Þ???????????????????

             
            9.3
            ?????

            ????????????¦Ì??????????¦Ì?????????????§»?¦Ì????‰^

             
            9.3.1
            ??????

            ???????????????¡ê?

            class ClassName:
                <statement-1>
                .
                .
                .
                <statement-N>

            ??????????????‰Ídef????????????§Ó?????§¹?????????????????if???????????????????????????????

            ?????????????????????????????ÈÉ???????????????????????????——???????????????????????§Ö?????????????????????????????????§Ò????????????????——??????????????????§»??

            ?????????????????????¦Ì???????????????????????????——??????????????????????????¦Ì???????????????????�¬?o???????????????

            ????????????????????????????????????????????????????áË???????????????????????????????????????????????????????????????????????????§¹????????????????????????????????????????????????????ClassName????

             
            9.3.2
            ?????

            ????????????????????????¨²????????

            ??????????¨²?Python?????§Ö???????????????????? obj.name?????????????????????????§Ö???????????§¹???????????????????????????

            class MyClass:
                "A simple example class"
                i = 12345
                def f(self):
                    return 'hello world'

            ??? MyClass.i ?? MyClass.f ????§¹?????????????????????????????????????????????????????????????? MyClass.i ???????????? __doc__ ????????§¹????????????????????????“A simple example class”??

            ??????????¨²?????????????????????????????¦Ì????????????????????¨À????Ä¥?????????????? ??

            x = MyClass()

            ?????????????¦Ì????????????????????????x??

            ??????????????“????”???????????????????????????????????????????§Ô????????????????????????__init__() ??????????????????????

                def __init__(self):
                    self.data = []

            ?????? __init__() ????????????????????????????¡ä?????????????? __init__() ?????????????????§µ?????????????????¦Ì??????

            x = MyClass()

            ?????????????????? __init__() ?????????§Ó?????????????????? __init__()???????????????????????»Ç

            >>> class Complex:
            ...     def __init__(self, realpart, imagpart):
            ...         self.r = realpart
            ...         self.i = imagpart
            ... 
            >>> x = Complex(3.0, -4.5)
            >>> x.r, x.i
            (3.0, -4.5)

             
            9.3.3
            ???????

            ?????????????????????????????????¦·????????????????????¨¢?????????§¹??????????

            ????????????????????????Smalltalk?§Ö?“???????”??C++?§Ö?“??????”???????????????????????????????????????????????????¨À????íà???x????›¯????MyClass ???????????¦Ä????????16?????????¦Ê¦Æ????????

            x.counter = 1
            while x.counter < 10:
                x.counter = x.counter * 2
            print x.counter
            del x.counter

            ???????????????????????????????????????????????????????????????Python?§µ????????????????????§µ?????????????????§Ù????????íà?????????append??insert??remove??sort???????????????????????????????????????????????????

            ??????????§¹??????????????????????ÈÉ???????§µ???????‰Î???????????????????§Ö??????????????????????§µ?x..f???????§¹?????????????MyClass.f?????????????x.i????????MyClass.i??????????????x.f??MyClass.f??????????????  ?????????????????????????

             
            9.3.4
            ????????

            ?????????????????

            x.f()

            ????????????§µ???????????‘hello world’?????????????????????¡Â?????x.f???????????????????›¥?????????¨¢????»Ç

            xf = x.f
            while True:
                print xf()

            ???????“Hello world”??

            ???¡Â?????????????????????????? x.f() ??????????????????????????f????????????????????????????????????????????????????????????????Python????????????????????????????????……

            ???????????????¦Ì?????????????????????????????????????????????????????????????????????§µ?????x.f() ????MyClass.f(x)?????????n?????????§Ò?????????????????????????????????????§Ò??????????????§Ò????????????????

            ???????????????????????????????????????§Ñ????????¡Â???????????????????????????????????????????????????§¹??????????????????????????????????????????????????????????????????????§Ò???¡Â?????????????????2????????????????????§Ò????????¦Ì?????§Ò??????????????????¦Ì?????§Ò??

             
            9.4
            ?§»???

            ????§»????????????????……??

            ????????????????????????????????????????????????????????§á??????????????bug??????????????????????????????????????????????????????§Õ??????????????§³§Õ??????????????????????????????????????????????????

            ????????????????????????????????????????????¨¢????Ñö????????????????????????????Python?????????????????????????????§Ø????????????????????????????Python?????????C§Õ????????§Ò??????????C????§ÕPython??????????????????????????????????

            ??????§³??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????§¹??????????????????????????????ú‘??

            ???????????????????????????????????????????????????????????????????????????????????????????????????????§Ý????????????????????????

            ????????????????????????? self???????????????????Python?????self ????????¦Ê??????‰^?????????????????????????????????Python??????????????????§Ó?????????§»?????????????????????????????

            ???????§Ö??¦Ê¦Ê???????????????§Ø?????????????????????????????????§Õ???????§µ???????????????????????§Ö?????????????»Ç

            # Function defined outside the class
            def f1(self, x, y):
                return min(x, x+y)
            
            class C:
                f = f1
                def g(self):
                    return 'hello world'
                h = g

            ???? f, g ?? h ??????C????????????????????????????????C????????????h??????g?????????????????????????????????

            ??? self ????????????????????????????????????

            class Bag:
                def __init__(self):
                    self.data = []
                def add(self, x):
                    self.data.append(x)
                def addtwice(self, x):
                    self.add(x)
                    self.add(x)

            ??????????????????????????????????????????????????????????????????????î•???????????????????????????????????????§Ü???????????????????????????????????§Ü?????????????????????????????????????????????????????????????????§Ö???????????????????????????????????????????????????????????????????????????????????

             
            9.5
            ???

            ????????????????????§à??“??”??????????‰^???????????????????

            class DerivedClassName(BaseClassName):
                <statement-1>
                .
                .
                .
                <statement-N>

            ???? BaseClassName ??????§Ö??????????????????????????????????????????????????????????????????????????????????????

            class DerivedClassName(modname.BaseClassName):

            ???????????§Û?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

            ??????????????????????????DerivedClassName() ??????§Ö???????????????¦Ì???????????????e????1????????????????????????????????????????????????????????????????????t????????

            ???????????????????????????????????????????§Ö??????????????????????????????????????????????????????????????????????§Ö???????????????C++??????????Python?§Ö????§Ù?????????????ú›??????

            ???????§Ö????????????????????????????????????§Ö???????????????????????????????????????????????“BaseClassName.methodname(self, arguments)”??????????????????¨¢????????????§Ý???????????????????????????????¨¢???

             
            9.5.1
            ????

            Python??????????????????????§Ö???????????????

            class DerivedClassName(Base1, Base2, Base3):
                <statement-1>
                .
                .
                .
                <statement-N>

            ????¦·????????????????????????????????????????????????????????? DerivedClassName ??????§Ö?????????????????????????????? Base1 ???????????????????????????????????????? Base2??????????

            ????§»?????????????????????Base1???????????Base2??Base3??????????????????????????Base1??Base2??????????????????????????????????????Base1????Base1??????§³?????????????????????????????????‰^??

            ?????????????????§Ý????????????¦²????Python????????????????????????????????????????????????????§Ö?????????????????????§Ø???????????????????????????????ÈÉ????????????????????????????????????????“???????”????????????????????????????

             
            9.6
            ??§Ò???

            Python???????§Ô????????????????¦Ê?????__spam ????????????????????????????¦Â???�r???????? _classname__spam?? ????????????classname ??????????????????????????????????¦Ë??????????????????????????????????????????????????????????????????????????§Ò??????????????????255??????????????????????????????????????????????????????????

            ???????????????????????§Ø???“???”??????????????????????????????????????????????????????????????§Ö??????????????????????????????????????????????????§Ö????????§á??????????????????????????????????????????????????????§Ø??????????????????§³??????????????????????????????????????§Ò???????

            ??????????exec??eval()??evalfile()???????????????????????????????global????????????global?????t?????“????”??????????????????????????????getattr() ??setattr()??delattr()????????????__dict__?????

             
            9.7
            ????

            ?????????Pascal??“?????record??”??C??“????struct??”????????????????????????????????????????????????????????????????????

            class Employee:
                pass
            
            john = Employee() # Create an empty employee record
            
            # Fill the fields of the record
            john.name = 'John Doe'
            john.dept = 'computer lab'
            john.salary = 1000

            ????Python???????????????????????????????????????????????????????????????????íà???????????????????????§Ú?????????????????????????????Read()??Readline()????????????????????????????????????????????????????????????

            ??????????????????? m.im_self ?????????????????????? m.im_func ?????????????????????

             
            9.8
            ???????

            ??????????????????????????????????????????????????

            ???????????¦Ì???§¹????????????????????

            raise Class, instance
            
            raise instance

            ?????????§µ?instance ?????? Class ???????????????????????????????????????§Õ??

            raise instance.__class__, instance

            ???????????????????????????§Ô?????????????????????????????????????????????????????????????????????????§Ô?????????????????????????íà???¡ä?????????B??C??D??

            class B:
                pass
            class C(B):
                pass
            class D(C):
                pass
            
            for c in [B, C, D]:
                try:
                    raise c()
                except D:
                    print "D"
                except C:
                    print "C"
                except B:
                    print "B"

            ???????????????????????????“execpt B”????????????????B??B??B???????????????????????

            ????????????????????????????????????????????e?????????????¨²???str()???????????????????????

             
            9.9
            ??????

            ??????????????????????????????? for ??????

            for element in [1, 2, 3]:
                print element
            for element in (1, 2, 3):
                print element
            for key in {'one':1, 'two':2}:
                print key
            for char in "123":
                print char
            for line in open("myfile.txt"):
                print line

            ?????????????????????????????????????¡Â???Python??????????????????for ??????????????§Ö??? iter() ?? ?¨²???????????????? next() ??????????????????????????????????????§Ü???????????next() ?????? StopIteration ???? for ???????????????????�a???????????

            >>> s = 'abc'
            >>> it = iter(s)
            >>> it
            <iterator object at 0x00A1DB50>
            >>> it.next()
            'a'
            >>> it.next()
            'b'
            >>> it.next()
            'c'
            >>> it.next()
            
            Traceback (most recent call last):
              File "<pyshell#6>", line 1, in -toplevel-
                it.next()
            StopIteration

            ??????????§¿????????????????????????????????????????????????? __iter__() ?????????????????? next() ?????????????????????????? next()????? __iter__() ????????self??

            >>> class Reverse:
                "Iterator for looping over a sequence backwards"
                def __init__(self, data):
                    self.data = data
                    self.index = len(data)
                def __iter__(self):
                    return self
                def next(self):
                    if self.index == 0:
                        raise StopIteration
                    self.index = self.index - 1
                    return self.data[self.index]
            
            >>> for char in Reverse('spam'):
                    print char
            
            m
            a
            p
            s

             
            9.10
            ??????

            ??????????????????????????????????§Õ????????????????????????????????????yield ?????? next() ?????????????????????????¦Ë????????????????????§Ö?¦Ë?¨²????§Ö????????????????????????????????????????????

            >>> def reverse(data):
                    for index in range(len(data)-1, -1, -1):
                            yield data[index]
                            
            >>> for char in reverse('golf'):
                    print char
            
            f
            l
            o
            g

            ??????????????????????????????????????¡¤?????????????????????????? __iter__() ?? next() ????????????????????

            ????????????????????¦Å????????????????????????????????????????????????§Õ?????????????? self.index ?? self.data ?????????????????

            ???????????????????????????????????????????????????? StopIteration????????????????§»????????§Õ?????????????????????????????????



            Footnotes

            ... ???????!9.1
            ??????????????????????????????????? __dict__ ????????????????????????????????? __dict__ ???????????????????????????????¦´??????????????????????????????????????§³?

            Previous Page

            Up One Level

            Next Page

            Python ???

            Contents

            ????? 8. ??????? ????? Python ??? ??? 10. ????????


            Release 2.3, documentation updated on July 29, 2003.

            See About this document... for information on suggesting changes.
            ?????, @ssv
            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      ÑÇÖÞÅ·ÃÀÔÚÏß