初始化方法

  • 当使用 类名() 创建对象时,会 自动 执行以下操作:
    1. 为对象在内存中 分配空间 —— 创建对象
    2. 为对象的属性 设置初始值 —— 初始化方法(init)
  • 这个 初始化方法 就是 __init__ 方法,__init__ 是对象的内置方法
  • __init__ 方法是专门用来定义一个类具右那些属性的方法
class Cat():
"""猫类""" def __init__(self):
print("初始化方法") cat = Cat()
# 运行结果
初始化方法 # 代码中并未覅用__init__方法,但是它会自己调用

在初始化方法内部定义属性

  • 在 __init__ 方法内部使用 self.属性名 = 属性的初始值 就可以 定义属性
  • 定义属性之后,再使用 Cat 类创建的对象,都会拥有该属性
class Cat():
"""猫类""" def __init__(self):
# print("初始化方法") self.name = "黑猫" def eat(self):
print("%s 吃鱼" % self.name) cat = Cat()
cat.eat()
# 运行结果
黑猫 吃鱼 # 使用Cat()类创建猫对象时,猫对象拥有名字---》黑猫

初始化的同时设置初始值

  • 如果在创建对象的同时,就设置对象的属性,可以对 __init__ 方法进行 改造

    • 把希望设置的属性值,定义成 __init__ 方法的参数
    • 在方法内部使用 self.属性 = 形参 接收外部传递的参数
    • 在创建对象时,使用 类名(属性1, 属性2...) 调用
class Cat():
"""猫类""" def __init__(self, name):
# print("初始化方法") self.name = name def eat(self):
print("%s 吃鱼" % self.name) cat = Cat("黑猫")
cat.eat() cat1 = Cat("白猫")
cat1.eat()
# 运行结果
黑猫 吃鱼
白猫 吃鱼

__del__ 方法

  • 在 Python 中

    • 当使用 类名() 创建对象时,为对象 分配完空间后,自动 调用 __init__ 方法
    • 当一个 对象被从内存中销毁 前,会 自动 调用 __del__ 方法(比如:在对象销毁前在做一些事情)
class Cat():
"""猫类""" def __init__(self, name):
# print("初始化方法") self.name = name def eat(self):
print("%s 吃鱼" % self.name) def __del__(self):
print("%s 吃完了" % self.name) cat = Cat("黑猫")
cat.eat() cat1 = Cat("白猫")
cat1.eat()
# 运行结果
黑猫 吃鱼
白猫 吃鱼
黑猫 吃完了
白猫 吃完了

__str__ 方法

  • 在 Python 中,使用 print 输出 对象变量,默认情况下,会输出这个变量 引用的对象 是 由哪一个类创建的对象,以及 在内存中的地址十六进制表示
  • 如果希望使用 print 输出 对象变量 时,能够打印 自定义的内容,就可以利用 __str__ 这个内置方法了
class Cat():
"""猫类""" def __init__(self, name):
# print("初始化方法") self.name = name def eat(self):
print("%s 吃鱼" % self.name) def __del__(self):
print("%s 吃完了" % self.name) def __str__(self):
return "我是 %s" % self.name cat = Cat("黑猫")
cat.eat()
print(cat)
# 运行结果
黑猫 吃鱼
我是 黑猫
黑猫 吃完了

python面向对象(二)的更多相关文章

  1. python面向对象(二)——类成员

    Python面向对象    类成员 1.字段         普通字段    属于对象         静态字段    属于类   2.方法 普通方法   触发者是对象    括号里至少一个参数 se ...

  2. python面向对象二

    1.1类的静态属性,类方法,类的静态方法 1.1.1静态属性(@property) 在类中: python内置的@property装饰器就是负责把一个方法(函数)变成属性来调用. class Stud ...

  3. python 面向对象二 类和实例

    一.类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法, ...

  4. Python 面向对象(二) 特殊方法

    一些Python特殊方法的汇总 __bases__    类的基类,返回元祖__base__  类的基类,也叫父类__call__ '类名()',类名加括号调用时执行的语句__class__ 对象或类 ...

  5. python面向对象(二)

    属性查找 类有两种属性:数据属性和函数属性 1. 类的数据属性是所有对象共享的 2. 类的函数属性是绑定给对象用的 class BeijingStudent:   school='Beijing'  ...

  6. python 面向对象(二)--访问限制

    在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的na ...

  7. python 面向对象(二)成员

    ##################################总结########################### 类的成员: 变量: 实例变量      对象.属性=xxx 类变量    ...

  8. Python 面向对象二(转载)

    来源:www.cnblogs.com/wupeiqi/p/4766801.html 三.类成员的修饰符 类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式: 1.公有成员, ...

  9. 四十一、python面向对象二

    A.成员: 1.字段:静态字段(每个对象都有同一字段),普通字典(每个对象都有不同的数据) 2.方法:静态方法(无需使用对象的内容),类方法,普通方法(使用对象中的数据) 3.特性:普通特性(将方法伪 ...

  10. Python自动化开发 - 面向对象(二)

    本节内容 1.isinstance(obj,cls)和issubclass(sub,super) 2.反射 3.__setattr__,__delattr__,__getattr__ 一. isins ...

随机推荐

  1. vs Code打开新的文件会覆盖窗口中的文件?

    这是因为你单击文件名的缘故,这个是“预览模式”,所以再单击其他文件时,会覆盖当前打开的文件. 如果你要每次都打开新tab,那就双击文件名好了.这个逻辑和sublime是一样的. 补充: 预览模式是现在 ...

  2. mysql 存中文失败问题

    在向数据库存中文时报错: 将中文字段的字符集改为utf8即可: 成功截图:

  3. 给自己立下一个flag先

    恩,今天开始写博客. 其实主要原因是被人甩了,想找个事情让自己忙起来. 主要原因是“男人没钱就是无能”,我是个应届毕业生.所以你懂的. 我不喜欢让心情不爽,所以只能找事情让自己忙起来.所以我开始立Fl ...

  4. Jeecg-Boot 2.0.1 版本发布,前后端分离快速开发平台

    Jeecg-Boot项目简介 Jeecg-boot 是一款基于代码生成器的快速开发平台! 采用前后端分离技术:SpringBoot,Mybatis,Shiro,JWT,Vue & Ant De ...

  5. PAT甲级——A1090 Highest Price in Supply Chain

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...

  6. 自建免费的代理ip池

    00x01--- 前言 因为爬虫被禁ip这样的反扒真的很凶,但自从建了一个代理ip池以后,反反扒就可以跟的上节奏.当然你也可以上网上各种代理平台自己付费.这些平台当然很方便提供api调用,还不用自己验 ...

  7. 编写函数处理user_list,新方法

    写函数,完成以下功能: # 例如有: user_list=[ {"name": "alex","hobby":"抽烟"} ...

  8. day69test

    目录 前端  vue main.js  vue CarTag.vue 小组件  vue Nav.vue小组件  vue Home.vue 页面  vue Car.vue 页面  vue CarDeta ...

  9. <el-tag></el-tag>部分属性与vue版本的兼容问题

    [01]标签使用按钮样式<el-tag effect="dark" v-if="myhotelinfo.runstatus=='T'" type=&quo ...

  10. css 超出两行省略号,超出一行省略号

    参考:https://www.cnblogs.com/yangguojin/p/10301981.html 超出一行省略: p{ white-space:nowrap; overflow:hidden ...