python类(一)

面向对象编程(OOP)是一种程序设计思想。

本文目录

  • 1 创建类
  • 2 创建实例
  • 3 修改属性的值

创建类

下面我们创建一个类:

class Student():
    """一个学生基本信息的类"""

    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.school = 'BIT'

    def print_info (self):
        print ("嗨!我是" + self.name + "。")
        print ("我" + str(self.age) + "岁。")
        print ("我在" + self.school + "读书。")

    def get_school (self):
        return self.school    def set_school (self, school):
        self.school = school

第一行,首先是关键字class,它表示我们要创建一个类;接下来是类名,这里是Student,类名一般首字母大写,最后是小括号()和冒号:。这样,我们就创建了一个名为Student的类。

"""一个学生基本信息的类"""是这个类的描述信息。

接下来我们在类中定义了四个方法(函数),分别是:__init()print_info()get_school()set_school()

__init()__()是一个特殊的方法,python在实例化(创建类的对象)该类时,会自动运行该方法。

__init()__()方法有三个形参,分别是selfnameage。如果观察本类的其他方法,就会发现每一个方法都有self参数,这个参数指向实例(对象)本身的引用,让实例能够访问类中的属性和方法。在调用方法时,self参数会自动传递,不需要写明。

__init()__()方法中定义了三个变量,以self为前缀的变量可以供类中所有方法和实例使用。self.name表示实例中的name变量。变量self.nameself.age由参数传递获得,变量self.school被指定了默认值'BIT'。实例的变量也叫作属性。

类中的第二个方法print_info()打印学生的基本信息。它接受一个由Python自动传递的参数self。在其函数体内调用自身属性时使用self.属性名的格式。

类中的第三个方法get_school()返回属性self.school的值,第四个方法set_school()接收一个字符串,并将其作为属性self.school的值。

创建实例

创建实例非常简单:

lihua = Student ('李华', 22)

这条语句按照Student类创建了一个lihua实例,创建时传入的参数是'李华'22。Python在创建实例时自动调用了类中的__init()__函数,因此实例的name属性被赋值为'李华'age属性被赋值为22

调用实例的属性也很简单:

print ("嗨!我是" + lihua.name + "。")

这条语句调用了实例lihua中的属性name,输出的结果如下:

嗨!我是李华。

由于类中已经定义了输出基本信息的方法,我们可以直接调用:

lihua.print_info()

这样,我们就调用了实例lihua的方法print_info()。它的输出如下:

嗨!我是李华。
我22岁。
我在BIT读书。

可以创建多个实例:

lihua = Student ('李华', 22)lihua.print_info()wang5 = Student ('王五', 23)wang5.print_info()

这里创建了两个实例,分别是lihuawang5,输出如下:

嗨!我是李华。
我22岁。
我在BIT读书。
嗨!我是王五。
我23岁。
我在BIT读书。

修改属性的值

前面我们已经调用过了实例的属性,比如要调用实例lihua的属性name,可以使用lihua.name调用,可以用相同的方法修改实例属性的值:

wang5 = Student ('王五', 23)wang5.school = ('北京大学')     # 修改属性的值wang5.print_info()

例子中第二条语句修改了属性的值,采用的是直接赋值的方法,例子的输出如下:

嗨!我是王五。
我23岁。
我在北京大学读书。

也可以使用类中已经定义的方法修改属性的值:

wang5 = Student ('王五', 23)wang5.set_school('清华大学')    # 修改属性的值wang5.print_info()

例子中第二条语句使用了实例中的方法set_school()对属性school值进行了更新,例子的运行结果如下:

嗨!我是王五。
我23岁。
我在清华大学读书。

本文分享自微信公众号 - mwangblog(mwangblog)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-03-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术点滴

那些陌生的C++关键字

那些陌生的C++关键字 学过程序语言的人相信对关键字并不陌生。偶然间翻起了《C++ Primer》这本书,书中列举了所有C++的关键字。我认真核对了一下,竟然发...

24570
来自专栏狮乐园

dart class overview

最近在折腾 flutter 相关的东西,所以当然要撸一下 dart 了。编程语言这个东西,接触得多了学习起来速度会提升不少,但是不同的语言具有不同的特色,我们需...

12720
来自专栏醒者呆

正则表达式——Java程序员懂你

正则表达式 关键字:正则表达式,Pattern,Matcher,字符串方法,split,replace 前文书立下了一个flag,这里要把它完成,就是正则...

39650
来自专栏偏前端工程师的驿站

一起Polyfill系列:Function.prototype.bind的四个阶段

昨天边参考es5-shim边自己实现Function.prototype.bind,发现有不少以前忽视了的地方,这里就作为一个小总结吧。 一、Function....

19360
来自专栏女程序员的日常

值类型和引用类型的区别,struct和class的区别

C#值类型和引用类型 1、简单比较   值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中。   值类型(value type):...

29310
来自专栏用户2442861的专栏

java final 关键字

http://blog.csdn.net/niguang09/article/details/6035813

10620
来自专栏DannyHoo的专栏

OC中的类和对象

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/de...

25260
来自专栏云瓣

读书笔记-你不知道的JavaScript(上)

本文首发在我的个人博客:http://muyunyun.cn/ 《你不知道的JavaScript》系列丛书给出了很多颠覆以往对JavaScript认知的点...

422100
来自专栏技术点滴

不要被C++“自动生成”所蒙骗

不要被C++“自动生成”所蒙骗 C++对象可以使用两种方式进行创建:构造函数和复制构造函数。假如我们定义了类A,并使用它创建对象。 A a,b; A c=a; ...

24790
来自专栏杨熹的专栏

Day 1-Java-imooc-4.流程控制语句

课程地址:http://www.imooc.com/learn/85 总结图片来自 http://www.imooc.com/article/10535 ? 本...

37250

扫码关注云+社区

领取腾讯云代金券