(21)类

* 创建类
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    class Person:
        def __init__(self,name,sex):
            self.name=name
            self.sex=sex

    info = Person("John","male")
    print "info.name=",info.name
    print "info.sex=",info.sex
   
    用一个class关键词,后面跟一个类名
    def __init__(self)  是构造方法
   
* self
      在构造函数中的第一个参数self, 就是起到了这个作用——接收实例化过程中传入的所有数据
    self应该就是一个实例( 准确说法是应用实例) , 因为它所对应的就是具体数据
    很像其它语言中的this
   
* 子类
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    class Person:
        def __init__(self, name, lang, email):
            self.name = name
            self.lang = lang
            self.email = email
        def author(self):
            return self.name

    class Programmer(Person): #继承父类Person
        def __init__(self, name, lang, email, system, website):
            Person.__init__(self,name,lang,email) #将Person.__init__()的功能继承到这里
            self.system = system #子类中不同于Person父类部分
            self.website = website

        def pythoner(self):
            pythoner_list = [ self.name, self.lang, self.email, self.system, self.website ]
            return pythoner_list

    if __name__=="__main__":
        writer = Person("qiwsir","Chinese","qiwsir@gmail.com")
        python = Programmer("qiwsir","Python","qiwsir@gmail.com","Ubutun","qiwsir.github.io")
        print "My name is:%s"%writer.author()
        print "I write program by:%s"%python.pythoner()[1]

* 命名空间
   import os 
   os 就是命名空间
  
* 私有方法
    不能从它们的模块外面被调用
    私有类不能从它们的类外面调用
    私有属性不能从它们的类外面调用
   
    类方法,属性名以两个下划线开始(但不是结束),它是私有的
   
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    class Person:
        def __init__(self,name):
            self.name = name
            print self.name

        def __work(self,salary):
            print "%s salary is: %d"%(self.name,salary)

        def worker(self):
            self.__work(500) #在类内部调用私有方法

    if __name__=="__main__":
        officer = Person("Tom")
        officer.worker()
       
* 专有方法
   以双划线开头,又以双划线结尾       

原文地址:https://www.cnblogs.com/toby2chen/p/5239567.html