W e S D
0 1

[Python基础]005.语法(4)

语法(4)


创建

  • 与其他大部分语言一样,Python也用 class 来创建类。

      class Person:       # Person类
          pass            # 空语句

     

  • 创建实例

      person = Person()   # 创建Person实例
      print person        # 会打印出实例信息

     

self

  • Python中使用 self 来指代实例自己,相当于Java、C++中的 this
  • Python中类的每个成员方法第一个参数必须是 self,这样类中每个方法就都可以调用到实例自己。

方法

  • 成员方法: 以self作为第一个参数

      class Person:
    
          def sleep(self, t):         # 定义成员方法
              print 'sleep %f' % t        
              print self              # 实例信息
    
      Person().sleep()

     

  • 构造方法__init__是Python类的构造方法。

      class Person:
    
          def __init__(self, name, age):      # 构造方法
              print name
              print age
              pass

     

    创建实例时写入参数

      person = Person('AC', 30)

     

    也可以像普通方法一样,定义默认参数

      class Person:
          def __init__(self, name, age=10):
              print name
              print aeg
              pass
    
      person = Person('AC')

     

  • 类方法: 静态方法,相当于Java与C++里的static方法
    只要不写self变量,方法就是静态方法,还需要加上@staticmethod来修饰。

      class Person:
    
          @staticmethod       # 方法修饰
          def count():        # 类方法
              return 0
    
      print Person.count() 

     

变量

  • 类变量: 静态变量,相当于static
    调用时用 类名.变量名

      class Person:
          num = 0                 # 定义类变量num
    
          @staticmethod
          def count():
              return Person.num   # 类方法调用
    
      print Person.num            # 调用
      print Person.count()

     

  • 成员变量: 定义和调用时都直接用 self.变量名

      class Person:
    
          def __init__(self, name, age):
              self.name = name            # 创建name属性,并赋值
              self.age = age              # 创建age属性,并赋值
    
          def info(self):                 
              print self.name             # 调用
              print self.age

     

综合例子

# Person.py

class Person:

    num = 0     # 总人数

    def __init__(self, name, age):
        self.name = name
        self.age = age

        Person.num = Person.num + 1     # 每创建一个实例,总人数加1

    @staticmethod
    def count():
        """
        获得总人数
        """
        return Person.num

    def info(self):
        """
        打印信息
        """
        print self.name
        print self.age


p1 = Person('AC', 30)
p2 = Person('Mount', 18)

p1.age = 31         # 修改变量

print p1.info()
print p2.info()
print Person.count()

 

继承

  • 在定义类时,在类名后加上(父类)

      # Programmer.py
    
      from Person import Person
    
      class Programmer(Person):
          pass

     

    这样Programmer就继承了Person。

  • 没有继承的类与Java一样都默认继承自一个继承类 object
    相当于

      class Person(object):
          pass

     

  • 方法重写

      # Programmer.py
    
      from Person import Person
    
      class Programmer(Person):
    
          def __init__(self, name, age, lang):     # 重写构造方法
    
              Person.__init__(self, name, age)     # 调用父类构造方法
    
              self.lang = lang                      # 添加的语言属性
    
          def info(self):                           # 重写父类方法
              print 'Programmer'
              print self.name
              print self.age
    
      Programmer('AC', 30, 'lua').info()
      print Person.couont()

     

    除了重写的方法,Programmer类会继承Person类的一切。

  • 没有继承的类与Java一样都默认继承自一个继承类 object
    相当于

      class Person(object):
          pass

     

  • Python支持多重继承

      class A:
          pass
      class B:
          pass
      class C:
          pass
    
      class Person(A, B, C):          # 继承多个类
          pass

     

 


 

 

本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4528963.html

 

 

 

posted @ 2015-05-25 21:33  SD.Team  阅读(270)  评论(0编辑  收藏  举报