第六章: 面向对象

第六章: 面向对象

目录

class Person(object):	# 继承与object
    def this_is_instance_method(self):	# self必须写,还可以加入其它参数 实例方法
        pass

  
tom = Person()	# tom实例 Person类
tom.this_is_instance_method() # 通过实例访问实例方法

重载____str____ 方法:类似于java toString

•The goal of repr is to be unambiguous.

•The goal of str is to be readable.

方法 (两侧加"__")功能说明
init()构造函数,生成对象时调用
del()析构函数,释放对象时调用
add()+
sub()-
mul()*
div()、truediv()/
floordiv()整除
mod()%
pow()**
cmp()比较运算
repr()打印、转换
setitem()按照索引赋值
getitem()按照索引获取值
len()计算长度
call()函数调用
contains ()测试是否包含某个元素
eq()、 ne()、lt()、 le()、gt()==、!=、<、<=、>
str()转化为字符串
lshift()<<
and()&
iadd()+=

不建议把子类复制粘贴父类的方法,建议先执行父类方法,然后修改定制,好处是便于维护

多态

巧用父类的构造函数和方法。

introspection自省,class知道自己的类名P50

print(instance.__class__)	# py自动在类里生成

print(instance.__class__.__name__)

print(instance.__dict__)
getattr–查一下很重要
新式类vs.旧式类

而对于Python 2,类必须继承自object,才是“新式类” l

class MyClass(object):	# py2.7 推荐
	pass
class MyClass:	# py3.5
    pass
静态方法static method

要记录由一个类创建的实例对象的数目

(跨实例信息,不属于实例属性)它不仅不传递而且也不期待一个self实例参数(括号里不用写self),

def function():		# this is a static method
    pass
function = staticmethod(function)		# 生成静态方法,重要	PPT P13

py2必须,而py3对类不必要

类方法

必须预留(cls)

def class_method(cls):		# 期待一个类
	pass
class_method = classmethod(class_method)
总结

–实例方法(instance method):它期待一个实例对象作为第一个参数。我们把这个参数写作self。通过实例对象调用实例方法时,Python会把实例对象自动传递给第一个参数。而通过类调用时,需要手动传入实例。

–静态方法(static method):它不期待参数,调用时也不需要实例对象作为参数。它通常都是通过类对象来调用。

–类方法(class method):它期待一个类对象作为第一个参数。我们把这个参数写作cls。

图片1

装饰器
@staticmethod
def static_method():
	pass
super()

Difference between py2 and 3.

super(Sub,self)._init_() # py2
super()._init_()		# py3
类的伪私有属性

变量名压缩(name mangling)

# 编译器把变量名self.__x 改为 _ThisClass__x

可以避免类变量名字冲突。

面向对象程序设计思想

OOP三个概念:继承、多态、封装

IS-A Relationship:apple is a fruit——继承

HAS-A Relationship: house has a room——组合&聚合

1558353667575

for cls in Class1, Class2, Class3:
	obj = cls(cls._name_)
    obj.work
抽象超类(抽象类 abstruct class)

6.2
15583546982261558354873408

必须要重载

好处:定义在父类,接口与接口的实现分离

多重继承

class multi(Base1, Base2):
iterator
"""
__iter__ 的方法,它返回一个迭代器对象(iterator)
__iter__ 和 __next__ 方法可以同时处于一个类中,在这种情况下,__iter__ 返回 self,我们可以说,这个可迭代对象是自己的迭代器
"""

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值