• Python中的类(2)


    一、使用类和实例

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

    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

     1 class Student():
     2     
     3     def __init__(self,name):
     4         """初始化学生信息"""
     5         self.name = name
     6         self.age = 0
     7         
     8     def get_desc(self):
     9         """得到学生的描述信息"""
    10         long_name = str(self.age) + ' ' + self.name
    11         return long_name
    12 
    13 stu1 = Student('joker')
    14 print(stu1.get_desc())
    15 stu1.age = 18
    16 print(stu1.get_desc())

    console:

    解释:

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

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

    student.py

     1 class Student():
     2     
     3     def __init__(self,name):
     4         """初始化学生信息"""
     5         self.name = name
     6         self.age = 0
     7         
     8     def get_desc(self):
     9         """得到学生的描述信息"""
    10         long_name = str(self.age) + ' ' + self.name
    11         return long_name
    12         
    13     def update_age(self,new_age):
    14         """用于更新学生的年龄"""
    15         self.age = new_age
    16 
    17 stu1 = Student('joker')
    18 print(stu1.get_desc())
    19 stu1.update_age(19)
    20 print(stu1.get_desc())

    console:

    解释:

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

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

  • 相关阅读:
    命令行编译运行java工程(转)
    JAVA配置环境变量的意义(转)
    在Linux环境下搭建Tomcat+mysql+jdk环境(转)
    java环境变量
    varchar(8000) nvarchar(4000) varchar(max) nvarchar(max) 区别
    HTTP与HTTPS握手的那些事(转载)
    ELK研究-部署搭建运用
    主机规划与磁盘分区
    占位符问题 python pymysql
    django 数据迁移的问题 sqlite3 --> mysql
  • 原文地址:https://www.cnblogs.com/tizer/p/11013235.html
Copyright © 2020-2023  润新知