018-051面向对象的介绍2

018-051
内置方法和属性
1)__del__方法:对象从内存中被销毁前,会被自动调用。
2)__str__方法:返回对象的描述信息,print函数输出使用。

被使用的类应该先开发,多个对象属性之间互不干扰
一个对象的属性可以是另外一个类创建的对象
定义没有初始值的属性:在定义属性时,如果不知道设置什么初始值,可以设置为None。None关键字表示什么都没有,表示一个空对象,没有方法和属性,是一个特殊的常量,可以将None赋值给任何一个变量。

身份运算符:用于比较两个对象的内存地址是否一致——是否是对同一个对象的引用
在Python中针对None比较时,建议使用is判断
1)is:判断两个标识符是不是引用同一个对象,x is y,类似于id(x)== id(y)
2)is not:判断两个标识符是不是引用不同对象,x is not y,类似于id(x)!= id(y)
is和双等号区别
is 是用于判断两个变量引用的对象是否为同一个,而双等号用于判断引用变量的值是否相等。

私有属性和私有方法
对象的某些属性和方法 可能只希望在对象的内部被使用,而不希望在外部被访问到
私有属性 就是对象不希望公开的属性
私有方法 就是对象不希望公开的方法
在定义属性或者方法时,在属性名或者方法名前 增加 两个下划线,定义的就是私有属性和方法,外界及子类都不能访问父类的私有属性和私有方法。
但是子类对象 可以通过父类的公有方法 间接访问到 私有属性或私有方法。

Python中,并没有真正意义的 私有,上面描述的私有属性和私有方法实际是对名称做了特殊的处理,使得外界无法访问,处理方式,可以在名称前加上_类名,即_类名__名称即可访问。注意,在实际开发中,不要使用这种方法,访问对象的私有属性和私有方法。

继承:子类 拥有父类所有方法和属性
语法:class 类名(父类名):
子类继承父类,可以直接享受父类中已经封装好的方法,不需要再次开发。子类中应该根据职责,封装子类特有的属性和方法。
说明:子类又可以说成派生类;父类也叫基类;继承也可以说成派生
继承的传递性:子类拥有父类 以及父类的父类 中封装的所有属性和方法。

方法的重写:当父类的方法实现不能满足子类需求时,可以对方法进行重写(overwrite)
重写父类的方法有两种情况:
1)覆盖父类的方法:具体的实现方式就相当于在子类中 定义了一个和父类同名的方法并且实现,重写之后,在运行时,会直接调用子类中重写的方法,不会调用父类中封装的方法。
2)对父类方法进行扩展:子类的方法实现中 包含父类的方法实现,就可以使用扩展的方式,在子类中重写父类的方法,在需要的位置使用super(). 父类方法 来调用父类方法的执行,代码其他的位置针对子类的需求,编写子类特有的代码实现。

在Python2.x中可以使用 父类名.方法(self)调用父类的方法,这种方法不推荐使用,因为一旦父类发生变化,方法调用位置的类名同样需要修改。

多继承:子类可以拥有多个父类,并且具有 所有父类的属性和方法,多继承的语法
class 子类名(父类名1,父类名2…)
注意:如果父类之间存在 同名的属性和方法,应该尽量避免使用多继承。
定义没有父类的类,建议使用语法:class 类名(object):这个可以确保在python2.x和3.x都可以使用。

多态:不同的子类对象 调用相同的父类方法,产生不同的执行结果。特点如下:
1)多态可以增加代码的灵活度
2)以继承和重写父类的方法为前提
3)是调用方法的技巧,不会影响到类的内部设计。

实例:创建出来的对象叫做类的实例,创建对象的动作 叫实例化,对象的属性叫实例属性,对象调用的方法叫实例方法,每个对象都有自己独立的内存空间,保存各自不同的属性,多个对象的方法,内存中只有一份,在调用方法时,需要把对象的引用传递到方法内部。

类是一个特殊的对象——类对象,类对象在内存中只有一份,使用一个类可以创建出多个实例对象。类对象可以拥有自己的属性和方法,通过类名. 的方式可以访问类的属性 或者 调用类的方法。类属性通常用来记录与这个类相关的特征,不会用于记录 具体对象的特征。
如果使用 对象.类属性 = 值 赋值语句,只会给对象添加一个属性,而不会影响到类属性的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值