Python学习之类与对象详解

本文和大家分享的主要是python中类与对象相关内容,一起来看看吧,希望对大家 学习python 有所帮助。
  面向对象编程的2个非常重要的概念:类和对象。
  对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类。
  类就相当于制造飞机时的图纸,用它来进行创建的飞机就相当于对象。
  定义一个类
  class person:
  age=10
  #下面sex没有进行初始化是会报错的
  #sex
  name="intsmaze"
  def getPersonInfo(self):
  print("age is %d;name is %s"%(self.age,self.name))
  必须要进行tab缩进来区分类的成员,同时类的属性必须指定一个值,否则会报NameError: name '_person__age' is not defined错误。
  创建类的对象
  vi demo.py
  class person:
  age=10
  name="intsmaze"
  def getPersonInfo(self):
  print("age is %d;name is %s"%(self.age,self.name))# 创建对象
  ly=person()# 调用对象的getPersonInfo方法
  ly.getPersonInfo()# 访问属性
  print(ly.age)
  python demo.py
  age is 10;name is intsmaze10
  创建对象的格式为对象名 = 类名()
  这里的nameage都是 公有 的,可以直接在类外通过对象名访问,如果想定义成 私有的,则需在前面加2个下划线 即'__'
  vi demo2.py
  class person:
  __age=10
  __name="intsmaze"
  def getPersonInfo(self):
  print("age is %d;name is %s"%(self.__age,self.__name))
  ly=person()
  ly.getPersonInfo()
  print(ly.__age)
  python demo2.py
  age is 10;name is intsmaze
  Traceback (most recent call last):
  File "class2.py", line 9, in <module>
  print(ly.__age)
  AttributeError: person instance has no attribute '__age'
  私有属性是不能够在类外通过对象名来进行访问的。在Python中没有像C++publicprivate这些关键字来区别公有属性和私有属性,它是以属性命名方式来区分,如果在属性名前面加了2个下划线'__',则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。
  类的方法
  在类中可以定义一些方法,定义方法采用 def 关键字,在类中定义的方法至少会有一个参数,一般以名为 self 的变量作为该参数(用其他名称也可以),而且需要作为第一个参数。
  vi demo3.py
  class person:
  __age=18
  def getPersonInfo(self):
  print("age is %d"%self.__age)
  def getPersonInfo2(self,age):
  if(self.__age<age):
  print("too old")
  else:
  self.__age=age
  print("age is %d"%self.__age)
  ly=person()
  ly.getPersonInfo()
  ly.getPersonInfo2(20)
  ly.getPersonInfo2(10)
  python中没有重载的概念,即不能方法重载。
  python demo3.py
  age is 18
  too old
  age is 10
  所谓的self,可以理解为自己。可以把它当做C++中类里面的this指针一样理解,就是对象自身的意思,在用某个对象调用该方法时,就将该对象作为第一个参数传递给self
  类的构造器
  vi demo4.py
  class person:
  __age=10
  __name="intsmaze"
  def __init__(self):
  self.__age=20
  self.__name="liuyang"
  def getPersonInfo(self):
  print("age is %d;name is %s"%(self.__age,self.__name))
  ly=person()
  ly.getPersonInfo()
  python demo4.py
  age is 20;name is liuyang
  对象在默认调用 __init__() 方法的时候传递一些参数
  vi demo5.py
  class person:
  __age=10
  __name="intsmaze"
  #def __init__(self):
  #       self.__age=20
  #       self.__name="liuyang"
  def __init__(self, age, name):
  self.__age = age
  self.__name = name
  def getPersonInfo(self):
  print("age is %d;name is %s"%(self.__age,self.__name))
  #ly=person()#ly.getPersonInfo()
  ly=person(100,"hello")
  ly.getPersonInfo()
  python demo5.py
  age is 100;name is hello
  构造器也不能重载,如果把上面的注释去掉,调用脚本将会报错。 构造器方法,在创建一个对象时默认被调用,不需要手动调用。
  析构
  创建对象时,默认调用 构造方法 ;当删除一个对象时,同样也会默认调用一个方法,这个方法为 析构方法 
  vi dem6.py
  创建对象#encoding=utf-8class Animal():
  构造方法
  def __init__(self):
  print '---构造方法被调用---'
  析构方法
  def __del__(self):
  print '---析构方法被调用---'
  创建对象
  dog = Animal()
  删除对象del dog
  python dem6.py
  ---构造方法被调用------析构方法被调用---


来源:博客园
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值