一、使用类和实例

我们先编写一个学生的类,它存储了有关学生的信息,还有一个整合学生信息的方法:

student.py

class Student():

    def __init__(self,name,age):
"""初始化学生信息"""
self.name = name
self.age = age def get_desc(self):
"""得到学生的描述信息"""
long_name = str(self.age) + ' ' + self.name
return long_name stu1 = Student('joker',18)
print(stu1.get_desc())

console:

解释:__init__() 用于初始化实例的属性,在get_desc() 中,使用了self.name 和 self.age 用户访问此实例中的属性,用来打印学生的基本信息。

二、给属性赋默认值以及修改属性的值

类中的每个属性都必须有初始值,就算它是0或者空字符串,那也必须要有。一般情况下我们使用__init__() 用于初始化,但如果有属性

在__init__() 中已被赋与初始值,则在实例化对象时,无需包含为它提供初始值的形参。

student.py

 class Student():

     def __init__(self,name):
"""初始化学生信息"""
self.name = name
self.age = 0 def get_desc(self):
"""得到学生的描述信息"""
long_name = str(self.age) + ' ' + self.name
return long_name stu1 = Student('joker')
print(stu1.get_desc())
stu1.age = 18
print(stu1.get_desc())

console:

解释:

  现在,在Python调用__init__() 来创建新实例时,只需要传入姓名即可实例化对象,因为第六行代码,给age 赋予了初始值,且init方法中也只需要除self外一个name形参,所以第一次打印的年龄为0,再看第15行代码,我们用这种方式给age重新赋值18,所以第二次打印的年龄是18,所以,如果我们需要修改对象中的属性可以使用这种方式,但却不是最好的方式。

  接下来使用第二种方式:用方法给属性赋值:

student.py

 class Student():

     def __init__(self,name):
"""初始化学生信息"""
self.name = name
self.age = 0 def get_desc(self):
"""得到学生的描述信息"""
long_name = str(self.age) + ' ' + self.name
return long_name def update_age(self,new_age):
"""用于更新学生的年龄"""
self.age = new_age stu1 = Student('joker')
print(stu1.get_desc())
stu1.update_age(19)
print(stu1.get_desc())

console:

解释:

  我们在类中,新增了一个用于更新学生年龄的方法,需要传入一个新的年龄,方法将把这个新的年龄,重新赋值给age来完成age的更新。在第19行代码中我们传入19,然后打印出的信息确实显示了我们所传入的年龄,即用方法更新属性的值是可行的。其实,这种方式是我们常用的,一般情况下,我们不会直接访问类中的属性,所以需要用方法来做“中间人”,因为这样,我们可以在方法中做一些额外的操作,比如在重新赋值前先判断年龄是否非法(负数),如果非法就不改变原先属性值或将原先的值设置为默认值。

  友谊是如此的甜美稳固忠诚,又至死不渝的神圣情感,只要他们不跟你借钱

Python中的类(2)的更多相关文章

  1. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  2. python中的类和实例

    今天花了两个多小时后搜索相关博客看了看python中有关类和实例的介绍,差不多大概明白了. python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后, ...

  3. 4、Python中的类详解(0601)

    <大话数据结构>的作者程杰在博客园也有博客,网址是:http://cj723.cnblogs.com/ 面向对象编程(OOP) 1.程序 = 指令 + 数据 代码可以选择以指令为核心或以数 ...

  4. Python中的类(上)

    在Python中,可以通过class关键字定义自己的类,然后通过自定义的类对象类创建实例对象. 例如,下面创建了一个Student的类,并且实现了这个类的初始化函数"__init__&quo ...

  5. python中新式类和经典类

    python中的类分为新式类和经典类,具体有什么区别呢?简单的说, 1.新式类都从object继承,经典类不需要. Python 2.x中默认都是经典类,只有显式继承了object才是新式类 Pyth ...

  6. python中的类(二)

    python中的类(二) 六.类的成员 字段:普通字段,静态字段 eg: class Province(): country=’中国’ #静态字段,保存在类中,执行时可以通过类或对象访问 def __ ...

  7. Python中的类(一)

    Python中的类(一) 一. 应用场景 如果多个函数中有一些相同的参数时,转换成面向对象. 二. 如何创建类 类是用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法 ...

  8. 关于Python中的类普通继承与super函数继承

    关于Python中的类普通继承与super函数继承 1.super只能用于新式类 2.多重继承super可以保公共父类仅被执行一次 一.首先看下普通继承的写法 二.再看看super继承的写法 参考链接 ...

  9. python中的类与继承

    Class 类的定义以及实例的建立 Python中,类通过 class 关键字定义. 例如最简单的一个类定义可以为: class Person(object): pass Python 的编程习惯,类 ...

  10. GO-结构体(类似python中的类)

    一.结构体有名属性 package main import "fmt" func main(){ type Sb struct { name string //属性名,数据类型 a ...

随机推荐

  1. Nginx系列篇四:Nginx+keepalived搭建一个高可用的双机双主热备

    建议:先阅读Nginx+keepalived主从配置,因为此篇是接着上篇开始的 上一篇我们简单的介绍了主从配置及其缺点,我们看一下双主热备配置: 2台Nginx+keepalived互为主备,各自绑定 ...

  2. jmeter(十九)调试工具Debug Sampler

    一.Debug Sampler介绍: 使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter properties,JMeter v ...

  3. Spark MLlib编程API入门系列之特征选择之卡方特征选择(ChiSqSelector)

    不多说,直接上干货! 特征选择里,常见的有:VectorSlicer(向量选择) RFormula(R模型公式) ChiSqSelector(卡方特征选择). ChiSqSelector用于使用卡方检 ...

  4. AJPFX总结jvm运行时内存分布

    jvm的运行过程中将java程序运行时数据区分为以下几个部分:      (1)程序计数器:存储虚拟机字节码执行的地址 (2)java虚拟机栈:java方法运行时的局部变量表,操作数栈,方法出口等 ( ...

  5. Spring Boot学到的内容

    Hello World:了解程序入口(创建启动类) Web程序:写Controller类(@RestController),写Controller方法(@GetMapping),maven依赖spri ...

  6. P2712 摄像头

    题目描述 食品店里有n个摄像头,这种摄像头很笨拙,只能拍摄到固定位置.现有一群胆大妄为的松鼠想要抢劫食品店,为了不让摄像头拍下他们犯罪的证据,他们抢劫前的第一件事就是砸毁这些摄像头. 为了便于砸毁摄像 ...

  7. 01认识Python和基础知识

     1.了解Python Python的发展历史,作者Guido, 荷兰人 Python的优缺点 Python在网站的开发,如YouTube,科学计算,数据分析,在游戏后台开发等方面广泛使用  2.编写 ...

  8. [Redis] 基于redis的分布式锁

    前言分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁.本篇博客将介绍第二种方式,基于Redis实现分布式锁. 可靠性首先,为了确保 ...

  9. HashMap Hashtable TreeMap LinkedHashMap 分析

    首先对hash的了解:就是关键字,和数据建立关系的映射. hash常用算法:假设我们中的字符有相应的内部编码,当然在实际过程中,我们不可能将所有的编码当做hash值. 平方取中法,将所得的内部编码平方 ...

  10. iOS代理模式

    iOS代理模式的简单理解:当一个对象无法直接获取到另一个对象的指针,又希望对那个变量进行一些操作时,可以使用代理模式. 代理主要由三部分组成: (1)协议:用来指定代理双方可以做什么,必须做什么. ( ...