zoukankan      html  css  js  c++  java
  • Python进阶-----类、对象的属性的增删改查

    一、类的属性

    类属性又称为静态属性。这些数据是与他们所属的类对象绑定的,不依赖于任何类实例。

    类有两种属性:数据属性和函数属性

    1. 类的数据属性是所有对象共享的

    2. 类的函数属性是绑定给对象用的
     1 class Chinese:
     2     country = 'China'
     3     def __init__(self,name):
     4         self.name = name
     5 
     6     def play_ball(self,ball):
     7         print('%s is playing %s'%(self,name,ball))
     8 
     9 def say_language(self,word):
    10     print('%s 说 %s'%(self.name,word))
    11 
    12 #查看类属性
    13 print(Chinese.country)
    14 
    15 #修改类属性
    16 Chinese.country = 'CHINA'
    17 print(Chinese.country)
    18 
    19 #删除类属性
    20 del Chinese.country
    21         
    22 #增加类数据属性
    23 Chinese.country = 'China'
    24 Chinese.location = 'Asia'
    25 print(Chinese.__dict__)
    26 
    27 #增加类函数属性
    28 Chinese.say_language = say_language
    29 p = Chinese('jony')
    30 p.say_language('中国话')
    31 
    32 #修改类函数属性
    33 def test(self):
    34     print('修改了函数属性')
    35 
    36 Chinese.play_ball = test   #将定义好的函数名赋值为原函数属性名即可,调用时还需用原函数属性名
    37 p.play_ball()
    二、对象(实例)的属性

    对象没有函数属性,调用的是类的函数属性
     1 class Chinese:
     2     country = 'China'
     3     def __init__(self,name):
     4         self.name = name
     5 
     6     def play_ball(self,ball):
     7         print('%s is playing %s'%(self,name,ball))
     8 
     9 p1 = Chinese('Tony')
    10 print(p1.__dict__)
    11 
    12 #查看实例的属性
    13 print(p1.name)
    14 print(p1.play_ball)    #实则调用了类的函数属性
    15 
    16 #增加实例的属性(一般没有给对象添加函数属性,因为class不会为你自动传入self参数)
    17 p1.age = 18
    18 print(p1.__dict__)
    19 
    20 #修改实例的属性
    21 p1.age = 20
    22 print(p1.__dict__)
    23 
    24 #删除实例的属性
    25 del p1.age
    26 print(p1.__dict__)
    三、属性的调用

    在类内定义的变量均存放在属性字典内。
    如果是以点方式来调用,则在类环境里寻找,自下而上寻找。
    如果直接变量名,则寻找的是类的外部全局变量。
    如果不是通过直接赋值对实例属性进行修改,若改属性实例不存在,类存在,则可以通过实例进行修改,如下示例:
     1 class Chinese:
     2     country = 'China'
     3     l = ['a','b']
     4     def __init__(self,name):
     5         self.name = name
     6 
     7     def play_ball(self,ball):
     8         print('%s is playing %s'%(self,name,ball))
     9 p2 = Chinese('Jerry')
    10 p2.l.append('c')
    11 print(Chinese.l)    #['a','b','c']
  • 相关阅读:
    css(完)
    HTML学习(完)
    leetcode学习03
    多线程详解2(完)
    windows7 64位下安装apache和php
    一个js,记录方便查询。
    用了锚的时候,有的层被覆盖了。
    日,在ie10下面hover里不能控制table
    在实现tab的时候,margin-bottom:-1px无效的问题
    javascript中,在一个类里attache的event事件中,如果调用类的成员变量和方法
  • 原文地址:https://www.cnblogs.com/Meanwey/p/9788669.html
Copyright © 2011-2022 走看看