美文网首页
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