python创建和使用类的方法如下

# class Dog():
#     def __init__(self,name,age):
#         self.name=name
#         self.age=age
#
#     def sit(self):
#         print(self.name.title()+"is now sitting")
#
#     def roll_over(self):
#         print(self.name.title()+" rolled over!")
#
# my_dog=Dog("willie",6)
# #print("My dog's name is "+my_dog.name.title()+".")
# #print("My dog is "+str(my_dog.age)+"years old.")
# my_dog.sit()
# my_dog.roll_over()

1、方法__init__() 是一个特殊的方法,包含三个形参:self 、name 和age 。在这个方法的定义中,形参self 必不可少,还必须位于其他形参的前面。因为Python调用这个__init__() 方法来创建Dog 实例时,将自动传入实参self 。每个与类相关联的方法调用都自动传递实参self ,它是一个指向实例本身 的引用,让实例能够访问类中的属性和方法。我的理解self这个形参是必不可少的,因为在类中定义方法的时候一定会有self这个形参。然后看下面这段代码

# class Dog():
#     def __init__(self,name,age):
#         self.name=name
#         self.age=age

我理解是name和age都是类Dog中的属性,这是对类中的属性进行初始化,因为类中的每个属性必须有初始值。同时记住以self 为前缀的变量都可供类中的所有方法使用,上面代码中的函数定义,函数只有一个self参数,但是函数体中可以使用 age,name这些属性。

在根据类创建实例的时候,比如

 my_dog = Dog('willie', 6) 

此时的self这个参数会默认自动传递,因此我们要传递的只是后面的两个参数。实例化结束后,我们可以通过Dog的实例来使用类中定义的函数或者直接访问类中有的属性。

__init__方法是对类的属性进行初始化,因此在该方法中要传递属性的初始值作为参数,当然你也可以直接对某个属性直接进行初始化,这样的话就不用在
__init__方法中提供这个属性的形参了;
class Car():def __init__(self,make,model,year):self.make=makeself.model=modelself.year=yearself.odometer_reading=0def get_descriptive_name(self):long_name = str(self.year) + ' ' + self.make + ' ' + self.modelreturn long_name.title()def read_odometer(self):print("This car has "+str(self.odometer_reading)+" niles on it.")

这里的self.odometer_reading=0直接初始化为0,因此不必在 _init_方法中为该属性提供形参作为默认的初始值。

还有,如果每次需要改变属性的值时都要在实例化时作更改,岂不是很麻烦?

所有有以下几种方式修改属性值。

1. 直接修改属性的值比如上面的odometer_reading = 0,可以这样修改  my_new_car.odometer_reading = 23

2.通过方法来修改

 def update_odometer(self, mileage):         """将里程表读数设置为指定的值"""              self.odometer_reading = mileage     

在类中定义一个方法专门来修修改属性的,如果需要更变属性的时候,直接调用该方法即可。

不过那些属性初始值是在_init_方法中的参数的,并不能通过以上的方式来修改(只能在初始化实例的时候传参修改?)

能操作的只是那些个没在在类的 _init_函数参数中有初始值的属性。也就是上面的  self.odometer_reading=0  这个属性是能被修改的,其他的 model,make,year 这这些属性只能在实例化类的时候在参数中修改

应该只 这样子的

 

转载于:https://www.cnblogs.com/Guhongying/p/10011185.html

Python 创建和使用类相关推荐

  1. python list add_用Python创建List对象类

    这是一个基本问题.我正在尝试以下代码:class SMS_store: def __init__(self): self=[] #probably something is wrong here de ...

  2. 独家 | 手把手教你用Python创建简单的神经网络(附代码)

    作者:Michael J.Garbade 翻译:陈之炎 校对:丁楠雅 本文共2000字,建议阅读9分钟. 本文将为你演示如何创建一个神经网络,带你深入了解神经网络的工作方式. 了解神经网络工作方式的最 ...

  3. python编程例子 输入 输出-推荐 :手把手教你用Python创建简单的神经网络(附代码)...

    原标题:推荐 :手把手教你用Python创建简单的神经网络(附代码) 作者:Michael J.Garbade:翻译:陈之炎:校对:丁楠雅 本文共2000字,9分钟. 本文将为你演示如何创建一个神经网 ...

  4. python简单代码-手把手教你用Python创建简单的神经网络(附代码)

    了解神经网络工作方式的***途径莫过于亲自创建一个神经网络,本文将演示如何做到这一点. 神经网络(NN)又称人工神经网络(ANN),是机器学习领域中基于生物神经网络概念的学习算法的一个子集. 拥有五年 ...

  5. python创建一个文件并写入_python创建文件并写入

    python怎么以追加的方式写文件? Python 3.5 想将从1到10写入一个文件并且自动换行 现在需要一个写文件方法,将selenium的脚本运行结果写入test_result.log文件中 首 ...

  6. 关于python创建类的深入理解

    背景 我们知道在python中一切皆为对象的概念,那我们们来看一段程序 class Foo(object):def __init__(self, name):self.name = namef = F ...

  7. python中编完类后到实例编写_[零基础学python]编写类之一创建实例

    虽然已经对类有了一点点模糊概念,但是,阅读前面一讲的内容的确感到累呀,都是文字,连代码都没有. 本讲就要简单多了,尝试走一个类的流程. 说明:关于类的这部分,我参考了<Learning Pyth ...

  8. python创建一个类初始化两个变量name、age_Python小白入门:第八讲||类

    Python 是一种面向对象的编程语言.在面向对象编程中,你编写表示现实世界中的事务和情景的类,并基于这些类来创建对象. 编写类时,你定义的一大类对象都有的通用行为.基于类创建对象时,每个对象都自动具 ...

  9. python创建变量_Python每天一分钟:给类对象动态新增/删除成员变量和方法(函数)...

    一般类对象新增变量或方法的过程 在面向对象(OOP)的编程方法中,如果需要给实例化的类对象新增方法或者属性,一般都是在class类的定义中新增内容,然后才能用类对象来调用新增的方法或变量.如在C++中 ...

最新文章

  1. OpenStack(Kilo版本)镜像服务glance的安装部署
  2. 软件开发人员进修必备的20本书
  3. python绘制四边形_python shapely.geometry.polygon任意两个四边形的IOU计算实例
  4. JWTToken在线编码生成
  5. linux压缩命令gzip_Linux gzip命令示例
  6. 关于数据库timestamp类型问题
  7. 仿英雄联盟网页HTML代码 学生网页设计与制作期末作业下载 大学生网页设计与制作成品下载 DW游戏介绍网页作业代码下载
  8. 单片机pic的linux环境代替,pic单片机can总线协议收发编程
  9. Struts1.x ActionForm
  10. 多轴联动编程C语言,全国数控技能大赛―复杂部件造型、多轴联动编程与加工_...
  11. Linux中reboot和shutdown的异同
  12. 达芬奇密码 第八十二章
  13. 数据挖掘——决策树和K近邻
  14. OLED屏幕还未普及,移动VR没有想象中爆发那么快
  15. 微信小程序利息计算器
  16. html help workshop问题记录
  17. [SAP]工艺路线相关的表
  18. OneDrive操作指南
  19. 学生抢课接口(高并发入门)
  20. Large Pose 3D Face Reconstruction 文章理解

热门文章

  1. linux 目录/sys 解析
  2. SecureCRT无法登录Ubuntu
  3. VC屏幕截图,保存为Bmp文件
  4. [react] 自定义组件时render是可选的吗?为什么?
  5. [react] React如何进行代码拆分?拆分的原则是什么?
  6. javascript学习系列(24):数组中的substring方法
  7. 前端学习(3277):promise的使用
  8. 前端学习(2928):昨日回顾
  9. [html] 移动端如何设置页面以全屏模式运行?
  10. 前端学习(2609):vuex的使用步骤