Python学习:类属性的操作

江枫思渺然 提交于 2019-12-04 00:08:07

一、类的属性

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

  1. 类的数据属性是所有对象共享的
  2. 类的函数属性是绑定给对象用的
class Chinese:
    country = 'China'
    def __init__(self,name):
        self.name = name

    def play_ball(self,ball):
        print('%s is playing %s'%(self,name,ball))

def say_language(self,word):
    print('%s 说 %s'%(self.name,word))

#查看类属性
print(Chinese.country)

#修改类属性
Chinese.country = 'CHINA'
print(Chinese.country)

#删除类属性
del Chinese.country
        
#增加类数据属性
Chinese.country = 'China'
Chinese.location = 'Asia'
print(Chinese.__dict__)

#增加类函数属性
Chinese.say_language = say_language
p = Chinese('jony')
p.say_language('中国话')

#修改类函数属性
def test(self):
    print('修改了函数属性')

Chinese.play_ball = test   #将定义好的函数名赋值为原函数属性名即可,调用时还需用原函数属性名
p.play_ball()

二、对象(实例)的属性

对象没有函数属性,调用的是类的函数属性

class Chinese:
    country = 'China'
    def __init__(self,name):
        self.name = name

    def play_ball(self,ball):
        print('%s is playing %s'%(self,name,ball))

p1 = Chinese('Tony')
print(p1.__dict__)

#查看实例的属性
print(p1.name)
print(p1.play_ball)    #实则调用了类的函数属性

#增加实例的属性(一般没有给对象添加函数属性,因为class不会为你自动传入self参数)
p1.age = 18
print(p1.__dict__)

#修改实例的属性
p1.age = 20
print(p1.__dict__)

#删除实例的属性
del p1.age
print(p1.__dict__)

三、属性的调用

  • 在类内定义的变量均存放在属性字典内。
  • 如果是以点方式来调用,则在类环境里寻找,自下而上寻找。
  • 如果直接变量名,则寻找的是类的外部全局变量
  • 如果不是通过直接赋值对实例属性进行修改,若改属性实例不存在,类存在,则可以通过实例进行修改,如下示例:
class Chinese:
    country = 'China'
    l = ['a','b']
    def __init__(self,name):
        self.name = name

    def play_ball(self,ball):
        print('%s is playing %s'%(self,name,ball))

p2 = Chinese('Jerry')
p2.country='japen'
print(p2.country)       #输出japen
print(Chinese.country)  #输出China
p2.l.append('c')
print(p2.l)             #['a','b','c']
print(Chinese.l)       #['a','b','c']

转自:Meanwey

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!