python面向对象

面向对象三大特性:

(一)封装:根据职责将属性和方法封装到一个抽象的类中(定义类的准则)

 

  • 1.封装是面向对象编程的一大特点
  • 2.面向对象编程的第一步--将属性和方法封装到一个抽象的类中
  • 3.外界使用类创建对象,然后让对象调用方法
  • 4.对象方法的细节都被封装在类的内部

一个对象的属性可以是另一个类创建的对象

1.开发枪类

2.开发士兵类

定义没有初始值的属性,在定义属性时,如果不知道设置什么初始值,可以设置为None

  • None关键字表示什么都没有

  • 表示一个空对象,没有方法和属性,是一个特殊的常量

  • 可以将None赋值给任何一个对象

class Gun:

    def __init__(self, model):
        self.model = model
        self.bullet_count = 0

    def add_bullet(self, count):
        self.bullet_count += count

    def shoot(self):
        if self.bullet_count <= 0:
            print("%s 没有子弹" % self.model)
            return
        self.bullet_count -= 1
        print("%s突突突 %d" % (self.model, self.bullet_count))


class Soldier:
    def __init__(self, name):
        self.name = name
        self.gun = None

    def fire(self):
        if self.gun == None:
            print("%s 还没有枪" % self.name)
            return
        self.gun.add_bullet(50)
        self.gun.shoot()
        pass


ak47 = Gun("AK47")

xusanduo = Soldier("许三多")
xusanduo.gun = ak47
xusanduo.fire()

身份运算符:

身份运算符用于比较两个对象的内存地址是否一致--是否是对同一个对象的引用

  • 在python中针对None比较时,建议用 is 判断

  • is和==的区别:

    is用于判断两个变量引用对象是否为同一个

    ==用于判断引用变量的值是否相等

私有属性和私有方法

应用场景:

  • 在实际开发中,对象的某些属性或方法可能只希望在对象内部被使用,而不希望在外部被访问到

  • 私有属性就是对象不希望公开的属性

  • 私有方法就是对象不希望公开的方法

定义方式:

在定义属性或方法时,在属性名或方法名前加两个下划线,定义的就是私有属性或方法

self.__age

def __secret(self)

伪私有属性和私有方法(科普)

(二)继承:实现代码的重用,想用的代码不需要重复的编写。子类拥有父类的所有方法和属性。(设计类的技巧,子类针对自己特有的需求,编写特定的代码)

专业术语:

继承的传递性:子类拥有父类以及父类的父类中封装的所有方法和属性。

方法的重写:当父类的方法实现不能满足子需求时,可以对方法进行重写

  • 覆盖父类的方法

  • 对父类方法进行扩展

多继承:可以让子类对象,同时具有多个父类的属性和方法

  • 注意事项:如果父类之间存在同名的属性或方法,应该避免使用多继承。

class 子类名(父类名1,父类名2,...)
  pass

(三)多态:不同的子类对象调用相同的父类方法,产生不同的执行结果,增加代码的灵活度。

  • 以继承和重写父类方法为前提

  • 是调用方法的技巧,不会影响到类的内部设计

类定义:

举例:

属性:类属性(top_score)、实例属性(player_name)

方法:静态方法(show_help)、类方法(show_top_score)、实例方法(start_game)

调用类中不同的方法:

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值