Python中的类
- 简介
- 定义
- 类属性
- 实例属性
- 类方法
- 访问控制
- 继承
简介
- 类(class): 主要是两个-类和类实例
定义
- 用关键字class去定义一个类,如果没有指定父类 ,默认继承object类
class Human(object):
  pass类属性
class Human(object):
  run=True- 类属性: 属性和类绑定,不是和实例绑定.说明这个属性是类共有的
实例属性
class Human(object):
  def __init__(self,name):
    self.name=name
human_a=Human("alan")- 实例属性: 实例属性是和实例绑定的,这个属性是实例特有的
- 实例属性可以在实例创建后任意时间设置
- 一般放在构造函数__init__()里
类方法
class Human(object):
  def __init__(self,name):
    self.name=name
  def walk(self):
    print self.name+"is walking"
human_a=Human("alan")
human_a.walk()- 类的方法可以看作是一种类属性
- 传入的第一个参数self,表示调用这个类方法的实例
访问控制
- 类实例的属性可以在外部随意更改
- 如果不想让外部访问到,则在属性名字前加两个下划线__name,这样就无法从外部直接访问了
- 通过get的接口可以访问
class Human(object):
  def __init__(self,name):
    self.name=name
  def walk(self):
    print self.name+"is walking"
  def get_name(self):
    return self.__name
human_a=Human("alan")
print human_a.get_name()
print human_a.name- 通过set接口可以更改__name字段
class Human(object):
  def __init__(self,name):
    self.__name=name
  def walk(self):
    print self.name+"is walking"
  def get_name(self):
    return self.__name
  def set_name():
    self.__name=name
human_a=Human("alan")
print human_a.set_name("bob")- 这样做的原因是可以增强代码的健壮性,直接暴露属性可能会有意想不到的后果,通过接口的方式可以加以控制
继承
- 子类拥有父类的属性,方法.叫做继承
- 子类同时可以拥有父类没有的属性,方法.叫做多态
- 示例:
class Man(Human):
  def __init__(self,name,has_wife):
    self.name=name
    self.__has_wife=has_wife- 假设Human有很多属性,很多初始化步骤:
class Man(Human):
  def __init__(self,name,has_wife): 
    super(Man,self).__init__(name)
    self.__has_wife=has_wife这里的super(Man,self)._ _ init_ _(name) 调用了父类Human的构造函数
- 继续创建一个类:
class Woman(Human):
  def __init__(self,name,has_husband):
    super(Woman,self).__init__(name)
    self.__has_husband=has_husband- Man中可以创建其他方法:
class Man(Human):
  def __init__(self,name,has_wife):
    super(Man,self).__init__(name)
    self.__has_wife=has_wife
  def work(self):
    print "A Man is Working!"
  def run(self):
    print "A Man is Running!"- Woman也可以创建其他方法:
class Woman(Human):
  def __init__(self,name,has_husband):
    super(Woman,self).__init__(name)
    self.__has_husband=has_husband
  def shopping(self):
    print "A Woman is Shopping!"
  def cooking(self):
    print "A Woman is Cooking!"








