zoukankan      html  css  js  c++  java
  • 类属性的增删改查,类属性和实例属性

    1.类属性的增删改查:

    class Chinese: #以下均是属性
        country = "China"
        def __init__(self,name):
            self.name = name
    
        def play_bsktball(self,bsktball):
            print("%s 正在打 %s"%(self.name,bsktball))
    #类查看
    print(Chinese.country)
    
    #类中修改数据属性
    #类修改
    Chinese.country = "ChinaChina"
    p1 = Chinese("ALEX") #声明类实例
    print(p1.__dict__)
    print(p1.country)
    
    #类增加
    Chinese.dang = "dang"
    print(Chinese.dang)#调用dang的三种方式
    print(p1.dang)
    print(p1.__dict__) #类中只含有一个属性"name":"ALEX" 实例基于引用,先从自身字典找,其次从类字典中找
    print(Chinese.__dict__["dang"])
    
    #类删除
    del Chinese.dang
    del Chinese.country
    print(Chinese.__dict__)
    
    #类中修改函数属性
    #增加函数属性
    def eat_food(self,food):
        print("%s 正在吃 %s"%(self.name,food))
    Chinese.eat = eat_food
    print(Chinese.__dict__)
    p1.eat("noodle")
    
    #修改函数属性
    def test(self,play_bsktball):
        print("修改函数%s中内容" %play_bsktball)
    
    Chinese.play_bsktball = test
    p1.play_bsktball("paly_bsktball")

     2.实例属性的增删改查

    class Chinese: #以下是实例属性的增删改查
        country = "China"
        def __init__(self,name):
            self.name = name
        def play_bsktball(self,bsktball):
            print("%s 正在打 %s"%(self.name,bsktball))
    p1 = Chinese("alex") #定义类
    print(p1.__dict__) #输出实例字典
    
    #查看
    print(p1.name)
    print(p1.play_bsktball)
    p1.play_bsktball("bsktball")
    
    #增加
    p1.age=18
    print(p1.age)
    print(p1.__dict__)
    print(p1.age)
    print(Chinese.__dict__) #类中没有实例key,value
    #实例只有数据属性,因为实例出发__init__,所以只能引用__init__中的内容。
    
    #调用实例函数属性的两种方法
    def test(self):
        print("我是来自实例p1的函数属性")
    def test1():
        print("我是来自实例p1实例的函数属性")
    p1.test=test
    p1.test1=test1
    print(p1.__dict__)
    p1.test(p1)
    p1.test1()
    
    #不要修改底层的属性字典
    p1.__dict__["sex"]="male"
    print(p1.__dict__)
    print(p1.sex)
    
    #修改
    p1.age=19
    print(p1.age)
    print(p1.__dict__)
    
    #删除
    del p1.age
    print(p1.__dict__)

    3.定义一个类,等同定义一个作用域

    #定义一个类,只当一个作用域去用,类似于C语言中的结构体
    class MyData:
        pass
    x=10
    y=20
    MyData.x=1
    MyData.y=2
    print(x,y)
    print(MyData.x,MyData.y)
    print(MyData.x+MyData.y)

    4.对象与实例属性(区分用“.”调用和用普通变量调用1)

    class Chinese:
        country="China"
        def __init__(self,name):
            self.name=name
        def play_ball(self,ball):
            print("%s 正在打 %s"%(self.name,ball))
    p1=Chinese("alex")#实例化p1
    print(p1.country)#访问类中country
    print(p1.name)#“name”:"alex" 访问实例中name
    p1.country="日本人"
    print(Chinese.country) #China
    print(p1.country) #日本人
    
    class Chinese:
        country="country"
        def __init__(self,name):
            self.name=name
        def play_ball(self,ball):
            print("%s 正在打 %s"%(self.name,ball))
    p1=Chinese("alex")
    print(p1.country) #首先在找country,其次从类中找,如果类有对象,输出,比如类中有country=country,那么输出country
    
    #类中设定作用域有要求,要加“.”,如果不加,只代表简单的变量
    country= "country"
    class Chinese:
        def __init__(self,name):
            self.name=name
            print("--->",country)
    
        def play_ball(self,ball):
            print("%s 正在打 %s"%(self.name,ball))
    p1=Chinese("alex")
    
    #区分调用变量时,加点与不加点的调用方式
    country="china----outside"
    class Chinese:
        country = "中国"
        def __init__(self,name):
            self.name=name
            print("----->",country)
        def play_ball(self,ball):
            print("%s 正在打 %s"%(self.name,ball))
    print(Chinese.__dict__)
    p1=Chinese("alex")#区分带“.”输出为普通变量输出,
    print(Chinese.country)
    print(p1.country)

    5.类与实例属性(区分用“.”调用和用普通变量调用2,结合列表)

    class Chinese:
        country = "china"
        L = ["a","b"]
        def __init__(self,name):
            self.name = name
        def play_ball(self,ball):
            print("%s 正在打 %s"%(self.name,ball))
    p1=Chinese("alex")
    print(p1.L)
    p1.L=[1,2,3] #向实例中添加[1,2,3]
    print(Chinese.L) #输出仍然是[a,b]
    print(p1.__dict__)
    
    p1.L.append("c")
    print(p1.__dict__)#p1没有变
    print(Chinese.L)#变的是累类中的L

     6.类属性+类实例属性例子1(from 老男孩作业day024)

    #------------------------------------------------------------------类属性增删改查
    class School: #数据属性供函数属性引用
        defi = "这是学校类"
        def __init__(self,name,position,type):
            self.name = name
            self.posi = position
            self.type = type
        def geo_position(self):
            # print("%s学校在"%(self.name,self.position))
            print("%s学校在%s" % (self.name,self.posi))
        def zhiwei_name(self,principal,president):
            principal = principal
            president = president
            print("nit自2018年起,%s的校长是%s,%s的书记是%s" %(self.name,president,self.name,president))
        def enrollment(self,enrol_mon,number):
            print("%s每年在%s招生学生%s" %(self.name,enrol_mon,number))
    print(School.defi)
    print(School.__dict__)
    
    #
    p1=School("nit","宁波","2500")
    print(p1.__dict__)
    p1.geo_position() # School("1","2","3")
    School.position()
    School.zhiwei_name()
    p1.zhiwei_name("章献民","胡征宇")
    
    #数据属性
    #
    School.tuition_fee = "5000-6000"
    print(School.__dict__)
    print(p1.tuition_fee)
    
    #
    p1.tuition_fee = "6000"
    print(School.tuition_fee)
    
    #
    print(p1.__dict__)
    print(School.__dict__)
    del School.tuition_fee
    del p1.tuition_fee
    print(p1.__dict__)
    
    #函数属性
    #增加函数属性
    def add_znj(name,age,type):
        print("%s是%s,2019年%s岁"%(name,age,type))
    School.znj = add_znj
    print(School.znj)
    School.znj("znj","19","female")
    
    #修改函数属性
    def change_znj(name,age,type):
        print("------这是修改后znj的info-------")
        print("%s是%s,2019年%s岁" %(name,age,type))
    School.znj = change_znj
    School.znj("znj","18","female")
    print(School.__dict__)
    
    #删除函数属性内容
    if School.__dict__["znj"]:
        print("True")
    del School.znj
    
    #---------------------------------------------------------------实例属性增删改查
    class School: #数据属性供函数属性引用
        defi = "这是学校类"
        def __init__(self,name,position,type):
            self.name = name
            self.posi = position
            self.type = type
        def geo_position(self):
            # print("%s学校在"%(self.name,self.position))
            print("%s学校在%s" % (self.name,self.posi))
        def zhiwei_name(self,principal,president):
            principal = principal
            president = president
            print("nit自2018年起,%s的校长是%s,%s的书记是%s" %(self.name,president,self.name,president))
        def enrollment(self,enrol_mon,number):
            print("%s每年在%s招生学生%s" %(self.name,enrol_mon,number))
    p1 = School("nit","ningbo","public") #定义类
    print(p1.__dict__) #输出实例字典
    
    #查看
    print(p1.name)
    print(p1.geo_position())
    p1.zhiwei_name("zxm","hzy")
    
    #增加
    p1.plan="快速融入浙大五位一体校区"
    print(p1.plan)
    print(p1.__dict__)
    print(School.__dict__) #类中没有实例key,value
    #实例只有数据属性,因为实例从__init__出发,所以只能引用__init__中的内容。
    
    #修改
    p1.plan="加快浙大宁波五位一体校区建设"
    print(p1.plan)
    print(p1.__dict__)
    
    #删除实例中的key,value
    del p1.plan
    print(p1.__dict__)
    
    #调用实例函数属性的两种方法
    def test(self):
        print("znj在发视频过来")
    def test1(self):
        print("等一下再回复znj")
    p1.test=test
    p1.test1=test1
    print(p1.__dict__,p1.test1)
    p1.test(p1)
    p1.test1(p1)
  • 相关阅读:
    高效编写微信小程序
    故事怎么讲才有逼格?
    基于RESTful API 怎么设计用户权限控制?
    【开源访谈】腾讯贺嘉:从小程序谈起,开发者该如何跟进新技术?
    图标字体设计
    微信小程序即将上线,创业者机会在哪里?
    微信小程序开发学习资料
    PC 微信扫码登陆
    一张二维码同时集成微信、支付宝支付
    支付宝Wap支付你了解多少?
  • 原文地址:https://www.cnblogs.com/yuyukun/p/10582583.html
Copyright © 2011-2022 走看看