zoukankan      html  css  js  c++  java
  • Python Base Five

    // 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

  • 相关阅读:
    IDEA学习和收藏夹
    mysql资料收集及学习
    一些模板代码
    docker学习
    Spring事务传播类型
    rust学习疑惑
    [重新做人]从头学习JAVA SE——java.lang.reflect
    java核心技术卷一
    Spring实战 难懂的JavaBean
    Spring实战系列
  • 原文地址:https://www.cnblogs.com/wangyaoguo/p/5762904.html
Copyright © 2011-2022 走看看