python的静态方法/类方法/属性方法

###静态方法
class Dog(object):
    def __init__(self,name):
        self.name=name
    @staticmethod#实际上和类没关系,唯一的关系就是必须通过类调用
    def eat(name,food):
        print("%s is eatting %s"%(name,food))
    @staticmethod#是一个独立的函数,但是也可以强制加入类里面,加一个self,但是调用需要把实例本身传入
    def eat1(self,food):
        print("%s is eatting %s" % (self.name, food))
d=Dog("旺财")
d.eat("w","包子")
d.eat1(d,"包子")
#静态方法:名义上归类管理,但是在静态方法里不能访问类和实例的任何属性
###类方法
class Dog(object):
    name1="包子"
    def __init__(self,name):
        self.name=name

    @classmethod#类方法:只能访问类变量不能访问实例变量
    def eat(self):
        print("%s is eatting "%(self.name1))
    @classmethod#类方法:只能访问类变量不能访问实例变量
    def eat1(name1):#注意这里只能传入类似于self 这种代表类本身的命令,记住self也是可以自定义的,比如这里
        print("%s is eatting "%(name1.name1))
d1=Dog("旺财")
d1.eat()
d1.eat1()
###属性方法
class Dog(object):

    def __init__(self,name):
        self.name=name
        self.__food=None#定义要给私有属性
    @property#属性方法:作用就是把一个方法变成一个静态属性
    def eat(self):
        print("%s is eatting %s "%(self.name,"food"))
        print(self.__food)#打印是否保存了用@eat.setter后传入的参数
    @eat.setter#如果要赋值,或则传入参数需要重写这个方法,然后在前添加@方法名.setter
    def eat(self,food):
        #print("%s is eatting %s "%(self.name,food))
        self.__food=food#赋值保存参数
    @eat.deleter#删除属性
    def eat(self):
        del self.__food
        print("删除了")
d=Dog("旺财")
d.eat#通过调用属性的方式调用方法,注意变成静态属性了,但是却不能直接赋值
d.eat="wc"#就相当于赋值,然后调用方法
print(d._Dog__food)#外部调用私有方法(廖大大说的)
d.eat
del d.eat#还有一种不建议的方式就是def d._Dog__food
##测试了一下@eat.getter这种方法可以重写原来的属性方法

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值