标签:
// 8 day(2016/8/11)
38. In python , it is oop.
     class Baskball:
         def setName(self, name):
                self.name = name
         def kick(self):
                print(‘my name is %s‘ % self.name)
      baskball = Baskball()
      baskball.setName(‘baskball‘)
      baskball.kick()
     -> my name is baskball
     class Ball:
         def __init__(self, name):
              self.name = name
         def kick(self):
              print(‘my name is %s‘ % self.name)
       b = Ball(‘tom‘)
       b.kick()
-> my name is tom
39. In python ,how to define private variable,
such as:
     class Person:
          name = ‘roy‘
     p = Person()
     print(p.name)
-> roy
if you use:
    class Person:
          __name = ‘roy‘
     p = Person()
     print(p.__name) || print(p.name)
-> error
if you use __ before variable ,you can access it direct.
     class Person:
           __name = ‘roy‘
           def getName(self):
                return self.__name
     p = Person()
     print(p.getName())
-> roy
    class Person:
       __name = ‘roy‘
    p  = Person()
    print(p._Person__name)
-> roy
40. inheritance mechanism
class SubClassName:(ParentClassName):
……
     class Parent:
          def hello(self):
                print(‘write code change world‘)
     class Child(Parent):
          pass
     p = Parent()
     p.hello()
     c = Child()
     c.hello()
->
write code change world
write code change world
if subclass methon is same with parent , it will cover parent method, such as:
class Child(Parent):
def hello(self):
print(‘believe youself‘)
c = Child()
c.hello()
-> believe youself
now we will study a simple example:
     import random as r
     class Fish:
          def __init__(self):
              self.x = r.randint(0,10)
              self.y = r.randint(0,10)
          def move(self):
             self.x -= 1
             print(‘my position is:‘,self.x, self.y)
     class Shark(Fish):
         def __init__(self):
            #Fish.__init__(self)
            super().__init__()
            self.hungry = True
        def eat(self):
             if self.hungry:
                print(‘eat eat eat‘)
                self.hungry = False
            else:
                print(‘not hungry‘)
       1,Fish.__init__(self)
       2,super().__init__()  
1 and 2 is same ,if you not add this ,you invoke move in Shark ,it will error, because ,__init__ will cover parent method, you call move() ,it will not found x and y. if you use 1 and 2, it will solve this question
multiply parent class:
class subClassName:(parent1ClassName, parent2ClassName):
……
     
     class Base1:
         def fool1(self):
               print(‘it is fool1‘)
     class Base2:
        def fool2(self):
              print(‘it is fool2‘)
     class c(Base1, Base2):
           pass
     c = c()
     c.fool1()
     c.fool2()
-> it is fool1
-> it is fool2
标签:
原文地址:http://www.cnblogs.com/wangyaoguo/p/5762904.html