python 定义属性的方法:装饰器,静态字段

面向对象小记:

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合

  • class Person():
        def __init__(self,name):
            self.name = name
        ....

    字段:字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同。普通字段属于对象,静态字段属于类. 

  • class className(object):
        # 静态字段
        feilds = 'hello'
        def __init__(self,name):
            # 普通字段
            self.name = name
    
    obj = className('kevin')
    # 直接访问静态字段
    print(className.feilds)
    # 直接访问普通字段
    print(obj.name)

    方法:方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。

        普通方法:由对象调用;至少一个self参数;执行普通方法时,自动将调用该方法的对象赋值给self;
     类方法:由类调用; 至少一个cls参数;执行类方法时,自动将调用该方法的类复制给cls;
        静态方法:由类调用;无默认参数;
     

    class Foo:
        def __init__(self, name):
            self.name = name
    
        def ord_func(self):
            """ 定义普通方法,至少有一个self参数 """
            print('普通方法')
    
    
        @classmethod
        def class_func(cls):
            """ 定义类方法,至少有一个cls参数 """
            print('类方法')
    
    
        @staticmethod
        def static_func():
            """ 定义静态方法 ,无默认参数"""
            print('静态方法')
     
    
    # 调用普通方法
    f = Foo('那么')
    f.ord_func()
    
    # 调用类方法
    Foo.class_func()
    
     
    # 调用静态方法
    Foo.static_func()

    属性:Python中的属性其实是普通方法的变种。   

  • 装饰器 即:在方法上应用装饰器
    静态字段 即:在类中定义值为property对象的静态字段

  • # -*- coding=utf-8 -*-
    class ageClass1():
        def __init__(self,age):
            self.age = age
        def get_age(self): # getAge(self)
            return self.age
        def set_age(self,age):
            self.age = age
    
        def del_age(self):
            del self.age
            print('已经删除age')
    
    class ageClass2(object):
        def __init__(self,age):
            self.age = age
        @property
        def Age(self):
            return self.age
        @Age.setter
        def setAgefunc(self,age):
            self.age = age
        @Age.deleter
        def delAgefunc(self):
            del self.age
            print('已经删除age')
    
    
    f = ageClass1(22)
    print(f.age) # 调用了get_age() 或者getAge()
    f.age = 23  # 调用了set_age() 或者setAge()
    print(f.age)
    del f.age   # 调用了del_age() 或者delAge()
    # print(f.age) # 已经没有age属于
    
    f2 = ageClass2(22)
    print(f2.age) # 调用了Age()
    f2.age = 23  # 调用了setAgefunc()
    print(f2.age)
    del f2.age   # 调用了delAgefunc()
    # print(f.age)
    

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值