美文网首页
Python类 -- 面向对象 self/ __init__(

Python类 -- 面向对象 self/ __init__(

作者: theagao | 来源:发表于2018-04-10 15:26 被阅读0次

    OOA  object oriented analysis

    OOD  object oriented design

    OOP object oriented programming

    什么是self ?

    打一比方:类是图纸,房子是实例,而self就是门牌号;相当于C++ 的指针

    class Boll: 

              def setname(self, name):

                    self.name = name

             def kick(self):             

                    print '我是 %s, 该死的,谁题我。。。 ' % self.name

    >> a = Boll()

    >> a.setname('球A')

    >> b = Boll()

    >> b.setname('球B')

    >> a.kick()

    我是球A, 该死的,谁题我。。。

    >> b.kick()

    我是球B, 该死的,谁题我。。。

    _ _init_ _ (self)方法

    class Boll:   

          def _ _init_ _(self, name):               

                    self.name = name         

            def kick(self):                            

                   print '我是 %s, 该死的,谁题我。。。 ' % self.name

    >> a = Boll('土豆')

    >> a.kick()

    我是土豆, 该死的,谁题我。。。

    >> b = Boll()

    会报错,因为name没有赋值  如果使用default值 会避免这个问题: def __init__(self, name=‘ball A’):    

    公有和私有

    python的伪私有  

    私有变量:  _ _变量名   

    python内部将其改为  _类名_ _变量名 的形式

    私有函数:_ _函数名

    class Person:

              name = ‘GYW’

              _ _age = 19        # 双下划线_ _ : python mangling 名字重整, 其实是python内部将带有下划线的名字改为了 _类名__变量名的形式

    def getAge(self):    # 外部可以通过这个方法来调用私有变量

           return self._ _age 

    >> p = Person()

    >> print p.name

    GYW

    >> print p._ _age

    报错,私有名字不能直接调用

    >> p. getAge()

    19

    >> p._Person_ _age()       # python mangling 名字重整

    19

    相关文章

      网友评论

          本文标题:Python类 -- 面向对象 self/ __init__(

          本文链接:https://www.haomeiwen.com/subject/kjqnhftx.html