zoukankan      html  css  js  c++  java
  • Python小白学习之如何添加类属性和类方法,修改类私有属性

    如何添加类属性和类方法,修改类私有属性

    2018-10-26  11:42:24

     

     

     

     类属性、定义类方法、类实例化、属性初始化、self参数、类的私有变量的个人学习笔记

    直接上实例:

     1 class player:
     2     def __init__(self,name,hp,occupation):
     3         self.name = name
     4         self.hp = hp
     5         self.occupation = occupation
     6     def print_role(self):
     7         print("%s %s %s"%(self.name,self.hp,self.occupation))
     8 #类实例化
     9 player01 = player('will','2000','warror')
    10 player02 = player('jine','2500','mage')
    11 #调用类方法
    12 player01.print_role()
    13 player02.print_role()
    • 第一步:简单介绍一下类,创建一个类名用class + 类名 + 英文冒号。
    • 第二步:def __init__(self,属性名1,属性名2,属性名3.....)是一个构造函数,表示类属性的默认值和属性的初始化,self是类的第一个参数,这个参数是类实例本身,后面若干个类的属性名。
    • 第三步:定义类方法,注意类方法的第一个参数必须是self,也就是类实例本身。这个类方法是打印玩家的属性信息。
    • 第四步:类实例化,把带参数的类复制给一个变量,然后我们就可以通过这个变量进行操作,调用查看实例的类方法和类属性。

    打印结果如下:

    那么如何添加类属性并修改属性呢:

     1 #添加类属性
     2 print('****************************************************')
     3 class player:
     4     def __init__(self,name,hp,occupation,power):
     5         self.name = name
     6         self.hp = hp
     7         self.occupation = occupation
     8         self.power = power #给类添加属性
     9     def print_role(self):
    10         print("%s %s %s %s"%(self.name,self.hp,self.occupation,self.power))
    11     def update(self,new_hp):
    12         self.hp = new_hp
    13 player3 = player('tom','3000','warror','150')
    14 player3.print_role()   #打印人物初始默认值。
    15 player3.update('1000') #调用方法,修改类属性(hp血量值)
    16 player3.print_role()   #调用打印方法,对比初始,检查hp是否改变
    17 #综上所述,我们通过添加类方法,并在类方法中通过传递新的参数修改已有的属性。当然我们也可以在实例化后修改,不过如果属性若为私有属性,则实例化后修改属性行不通
    18 player3.name = 'Jines' #在实例中,类外面修改类属性也可以,但这种方法仅限于非私有属性
    19 player3.print_role()
    20 print('=======================================================')

    第一、从上面源码中,我们可以看出,只需在构造函数中,也就是__init__()函数中,添加形参,并且创建一个新的self.power变量(名字随意,这里只是举例,),并将形参赋值给self.power,然后我们在实例化中,添加对应的实参就可以完成添加一个新的类属性。

    第二、如何修改参数,上面代码中提供了两种方法,一种是在类中,通过定义新方法修改,另一种是在实例化后,修改实例的属性。这两种方法都可以实现修改类属性。

    执行结果:

    从上面可以看出,两种方法都可以修改类的属性。

    但是,如果类的属性是私有属性,那通过修改实例化后的属性就无法实现修改属性了。但另一种方法通过定义一个新的方法,在新的的方法中修改私有变量是可以实现的。

    源码如下:

     1 #私有属性,只要在属性前面加双下划线__
     2 class player:
     3     def __init__(self,name,hp,occupation,power):
     4         self.__name = name
     5         self.hp = hp
     6         self.occupation = occupation
     7         self.power = power #给类添加属性
     8     def print_role(self):
     9         print("%s %s %s %s"%(self.__name,self.hp,self.occupation,self.power))
    10     def update(self,new_name):
    11         self.__name = new_name
    12 player4 = player('tom','3000','warror','150')
    13 player4.print_role()
    14 player4.name = 'Pole'
    15 player4.print_role() #通过类型外修改类私有属性,很明显不可以,只有通过类方法修改类属性
    16 print('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$')
    17 player4.update('Machel') #通过输出结果可见,成功修改了私有变量,注意一点,私有变量修改,类中所有要修私有属性的self.attribute应对应改成self.__attribute
    18 player4.print_role()

    执行结果:

    从上面可以看出我们通过实例修改私有变量,输出结果仍是初始化的状态,并没有改变,但通过调用类方法修改类属性的值却是实现了。

    每天努力一点点,今天比昨天更进步。
  • 相关阅读:
    深入了解css的行高Line Height属性
    【C++】函数指针
    【C++】常用知识点
    将数字转化为液晶显示屏的样子
    【多媒体】PCM
    【Android】网络下载图片&SD卡文件存储
    CPU 缓存(Cache)
    【C++】typename
    【多媒体】音频格式
    【Android】图片的异步加载
  • 原文地址:https://www.cnblogs.com/chxb/p/9855886.html
Copyright © 2011-2022 走看看