0
点赞
收藏
分享

微信扫一扫

Python编程Day06-Python类



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!"



举报

相关推荐

0 条评论