day 07

面向对象

 python可以实现面向对象的编程。个人对面向对象思想的理解是这样的:计算机发展的还不是那么快的时代,需求相对来说

没有那么复杂,根据需求实现功能即可满足;后期由于互联网的发展,需求越来越复杂,单一地根据过程去开发很容易让人搞

糊涂,所以研究出一套取自于现实中正常思维的开发模式,使代码看起来逻辑清晰。

1 面向对象主要还是由 类 来实现:

class className(object):  # 括号中为要继承谁,所有最初定义的类都应从object中继承
    pass
 2 定义类的属性:

  使用 __init__ (左右都是俩下划线)函数,可以接受实例化时输入的参数,作为实例的属性。

class dog(object):
    def __init__(self,name):                
        self.name = name
 __init__ 中首个参数为 self ,类似 js 里的 this ,谁调用这个函数,self就指向谁,name接受实例化时的参数,

self.name 绑定name属性,类和实例,方法跟属性都可以用点 . 来绑定。

class dog(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
gou = dog("狗子",2) # 类的实例化
gou.name >> "狗子"
gou.age >> 2

 3 类的方法

所谓类的方法,就是在类里头定义一个函数,函数的首个参数也需要为self

class dog(object):
    def wang(self):
        print("汪!")
gou = dog()
gou.wang() 》》 "汪!"
# 注意,调用方法时,要加括号。要么就是返回方法的内存地址

 4 三个特性

 面对对象的三个特性为: 封装,继承,多态。

封装: 应该注意到了,类的定义格式很像函数,将一大堆代码写在类的肚子里,如果有多个对象很多特征相似,可以

  把这些特征封装进一个类中。

继承: 类有继承的功能,所谓继承就是从一个类里头实例化一个对象,你没写这个对象的属性方法,这个对象从他的类中

 得到了所有的属性方法,可以直接调用。

class dog(object):
    def __init__(self)
        self.leg = 4
    def attack_method(self):
        print("the dog is bitting!")

gou = dog() # 实例对象gou 从类 dog 中继承了所有的属性和方法
gou.leg >> 4
gou.attack_method()  >> the dog is bitting!

类也能继承,一个类定义的时候,括号中有个object参数,表示从 python 自带的object类中继承相应的属性以及方法。

 同样的,也能从其他类中继承属性和方法

class animal(object):
    def __init__(self):
        self.look = "cute"
class dog(animal):
    def looklike(self):
        print(self.look)  
        # 调用了未定义的 look 属性

gou = dog()
gou.looklike() >> cute
gou.look >> cute  # dog中未定义的属性
 多重继承,有时候一个对象不仅有这个类的特性,还有那个类的特性,此时可以可以定义一个类,继承多个类。

class animal(object):
    def __init__(self,color):
        self.color = color
class dog(object):
    def __init__(self,name):
        self.name = name
    def wang(self):
        print("汪!")
class village_dog(animal, dog):
    pass # 从animal和dog中继承

gou = village_dog("黄色")
gou.color >> "黄色"
gou.wang() >> "汪!"
# 要注意的是,animal和dog中都有 init 函数,init函数只会执行一个,就近选择,如果自身有用自己的,自己没,用参数里靠前的那个类的
 多态:
   多态这个特性是理所当然的,A类继承自B类,B类有继承自C类,C类甚至继承自D和E类。则从A类实例化后的对象,

判断类型时,可以是 A,B,C,D,E 类,针对这些类定义的函数他都能用,这就是多态。

class animal(object):
    def __init__(self,color):
        self.color = color
class dog(object):
    def __init__(self,name):
        self.name = name
    def wang(self):
        print("汪!")
class village_dog(animal, dog):
    pass # 从animal和dog中继承

gou = village_dog("sdfa")
isinstance(gou,dog) >> True
isinstance(gou,animal) >> True
# isinstan 判断是否为XX类型  如果用type 则只显示 village 类
 5 类的一些操作方法

 dir(obj) 显示类的所有属性和方法
修改/添加属性,方法 : 直接点 . obj.haha = "哈哈" obj.asdf = lambda x: return x+1


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值