程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

模块(0)

标准库(0)

标签  

标准库模块(0)

字符串(0)

日期归档  

Python 面向对象

发布于2020-02-25 14:54     阅读(876)     评论(0)     点赞(9)     收藏(3)


dir 内置函数

在 标识符 / 数据 后输入一个 .,然后按下 TAB 键,iPython 会提示该对象能够调用的 方法列表
在这里插入图片描述

使用内置函数 dir 传入 标识符 / 数据,可以查看对象内的 所有属性及方法
提示 __方法名__ 格式的方法是 Python 提供的 内置方法 / 属性
在这里插入图片描述
在这里插入图片描述

定义类

方法 的定义格式和之前学习过的函数 几乎一样
区别在于第一个参数必须是 self

创建对象

对象变量 = 类名()
  • 1

在这里插入图片描述

内存地址

直接打印:输出16进制
使用id函数:输出10进制
在这里插入图片描述

给对象增加属性

可以直接在类的外部给对象增加属性,但是不推荐。

哪一个对象调用类的方法,self就是哪一个对象的引用。

在这里插入图片描述
如果 tom.name 的赋值语句在调用方法之后,将会报错。

所以,对象应该包含有哪些属性,应该封装在类的内部。

初始化方法 __init__

当使用 类名() 创建对象时,会 自动 执行以下操作:

  • 为对象在内存中 分配空间 —— 创建对象
  • 为对象的属性 设置初始值 —— 初始化方法(init)

这个 初始化方法 就是 __init__ 方法,__init__ 是对象的内置方法
__init__ 方法是 专门 用来定义一个类 具有哪些属性的方法!


在开发中,如果希望在 创建对象的同时,就设置对象的属性,可以对 __init__ 方法进行 改造:
  1. 把希望设置的属性值,定义成 init 方法的参数
  2. 在方法内部使用 self.属性 = 形参 接收外部传递的参数
  3. 在创建对象时,使用 类名(属性1, 属性2…) 调用

在这里插入图片描述

__del__方法

在 Python 中

  • 当使用 类名() 创建对象时,为对象 分配完空间后,自动 调用 init 方法
  • 当一个 对象被从内存中销毁 前,会 自动 调用 del 方法

在这里插入图片描述

__str__方法

类似Java中的重写toString方法,原本直接打印对象输出的是内存地址,现在可以自定义输出内容。此方法必须返回一个字符串!

在这里插入图片描述
封装实例练习:

Soilder类与Gun类

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("shooting!!!!!!, now nums of bullet is %d" % self.bullet_count)
            self.bullet_count -=1
        else:
            print("bullet is < 0 now")
            return

class Soldier:

    def __init__(self,name,gun):
        self.name = name
        self.gun = gun

    def fire(self):

        if self.gun is None:
            print("I dont have a gun")
            return


        print("Soilder %s is using %s" % (self.name,self.gun.model))
        self.gun.shoot()

g1 = Gun("AK47")
s1 = Soldier("士兵76",g1)
s1.gun.add_bullet(5)
s1.fire()
s1.fire()
s1.fire()
s1.fire()
s1.fire()
s1.fire()
s1.fire()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

私用属性和私有方法

定义方式:

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

class woman:
	def __init__(self,name):
		self.name = name
		self.__age = 18
	
	def __myAge(self):
		print("My age is %d" % self.__age)	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
发布了40 篇原创文章 · 获赞 1 · 访问量 951


所属网站分类: 技术文章 > 博客

作者:追梦骚年

链接:https://www.pythonheidong.com/blog/article/233428/8c18dc1ff88228305afb/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

9 0
收藏该文
已收藏

评论内容:(最多支持255个字符)