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=make
self.model=model
self.year=year
self.odometer_reading=0
def get_descriptive_name(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return 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 这这些属性只能在实例化类的时候在参数中修改

应该只 这样子的

 

Python 创建和使用类的更多相关文章

  1. Python——一个简单的类的创建和应用

    1.创建类,设置属性和给属性设定默认值,设置方法并访问类的属性: 2.利用类创建多个实例,以及调用类的方法的两种办法: 3.设置更新属性的函数,并更新实例的属性. class dog(object): ...

  2. 1.面向过程编程 2.面向对象编程 3.类和对象 4.python 创建类和对象 如何使用对象 5.属性的查找顺序 6.初始化函数 7.绑定方法 与非绑定方法

    1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照 ...

  3. Python不使用元类创建缓存实例

    问题 当创建类实例时我们想返回一个缓存引用,让其指向上一个用同样参数(如果有的话)创建出来的类实例. 这个问题常常出现在当我们想确保针对一组输入参数只会有一个类实例存在时. 解决方法: 使用一个与类本 ...

  4. python基础——使用元类

    python基础——使用元类 type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello. ...

  5. python学习笔记1-元类__metaclass__

    type 其实就是元类,type 是python 背后创建所有对象的元类   python 中的类的创建规则: 假设创建Foo 这个类 class Foo(Bar): def __init__(): ...

  6. Python基础:新式类的属性访问

    一.概述 二.准备工作 1.讨论对象 2.名词解释 三.实例绑定的属性访问 1.获取属性 一般规则 参考源码 示例验证 2.设置属性 一般规则 参考源码 示例验证 3.删除属性 一般规则 参考源码 示 ...

  7. Python基础:元类

    一.概述 二.经典阐述 三.核心总结 1.类的创建过程 2.元类的使用惯例 四.简单案例 1.默认行为 2.使用元类 五.实践为王 一.概述 Python虽然是多范式的编程语言,但它的数据模型却是 纯 ...

  8. Python创建list和按照索引访问list

    Python创建list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.比如,列出班里所有同学的名字,就可以用一个list表示:>> ...

  9. Python中的元类和__metaclass__

    1.什么是元类 元类让你来定义某些类是如何被创建的,从根本上说,赋予你如何创建类的控制权.可以把元类想成是一个类中类,或是一个类,它的实例是其它的类.当某个类调用type()函数时,你就会看到它到底是 ...

随机推荐

  1. Linux sed 命令字符串替换使用方法详解

    1. sed替换的基本语法 sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义.2. 单引号” ‘ ’”是没有办法用反斜线” ...

  2. java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream

    java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream at org.apach ...

  3. EDK II之USB协议栈的实现简介

    本文旨在简单介绍一下 UEFI中USB协议栈的代码框架: 主要包括: USB主控制器驱动(HCDI:EFI_USB2_HC_PROTOCOL) USB总线驱动(USBDI:EFI_USB_IO_PRO ...

  4. mysql 汇总

    子查询:    select   a.id,a.hotelname,max(b.day) as day,a.hotelrankid,   c.hotelrank,min(b.basicprice) a ...

  5. css文本样式text、字体样式font

    文本样式text 1.文本颜色color 例如h1 {color:red;} 2.文本方向direction,不常用 默认ltr从左到右,rtl表示从右到左 3.文本水平对齐方式text-align ...

  6. Bootstrap表单样式

    <form class="form-horizontal" role="form"> <fieldset> <legend> ...

  7. Python3 格式化字符串

    Python3 格式化字符串 在Python 3.6之前,有两种将Python表达式嵌入到字符串文本中进行格式化的主要方法:%-formatting和str.format() 一.%-formatti ...

  8. python之字符编码(四)

    一.字符编码的使用: 1.文本编辑器 unicode----->encode-------->utf-8 utf-8-------->decode---------->unic ...

  9. CentOS7使用命令连接网络配置

    背景 在安装完CentOS7无桌面的情况下,无法使用桌面图标连接,如下图所示,这时我们需要在配置文件中配置网络连接信息. 步骤 查看ip地址:ifconfig PS:在未连接网络之前,我们是查看不到i ...

  10. SOAP和WebService的那些事

    当初对这段历史有过一点研究,不过当初写得关于这部分历史的论文不知道被我丢哪儿去了,下面我用通俗一点的语言来话说一下这段历史吧,因为当初详细到具体人物具体时间的已经记不清了,所以这里写得不够专业,大家就 ...