码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习第十六课——静态属性(property, classmethod, staticmethod)

时间:2020-02-15 15:02:24      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:closed   onclick   init   width   技术   length   display   %s   style   

计算所居住房子的面积

普通写法

class Room:
    def __init__(self,name,owner,width,length,heigh):
        self.name=name
        self.owner=owner
        self.width=width
        self.lenth=length
        self.heigh=heigh

    def cal_area(self):
        print(%s 住的 %s 总面积为 %s %(self.owner,self.name,self.heigh*self.width))

r1=Room(别墅,憨憨,100,100,100)
r2=Room(大别墅,玫玫,1000,1000,1000)

r1.cal_area() # 憨憨 住的 别墅 总面积为 10000
r2.cal_area() # 玫玫 住的 大别墅 总面积为 1000000

property 写法

# property 用法
class Room:
    def __init__(self, name, owner, width, length, heigh):
        self.name = name
        self.owner = owner
        self.width = width
        self.lenth = length
        self.heigh = heigh

    @property  # 装饰器property 可以将 方法 转化为属性  在下面调用时  不需要带括号
    def cal_area(self):
        print(%s 住的 %s 总面积为 %s % (self.owner, self.name, self.heigh * self.width))


r1 = Room(别墅, 憨憨, 100, 100, 100)
r2 = Room(大别墅, 玫玫, 1000, 1000, 1000)

r1.cal_area  # 憨憨 住的 别墅 总面积为 10000
r2.cal_area  # 玫玫 住的 大别墅 总面积为 1000000

类方法(classmethod)

class Room:

    tag=1
    def __init__(self,name,owner,width,length,heigh):
        self.name=name
        self.owner=owner
        self.width=width
        self.lenth=length
        self.heigh=heigh
    @property
    def cal_area(self,):

        return self.heigh*self.width

    def test(self,):

        print(from test,self.name)

    @classmethod  # 变为了类方法
    def tell_info(cls):
        print(cls)
        print(---->, cls.tag)


    # def tell_info(self):
    #     print(‘---->‘,self.tag)

print(Room.tag)  # 1
# r1=Room(‘别墅‘,‘憨憨‘,100,100,100)
# Room.test(‘测试‘)

#Room.tell_info(r1) # ----> 1
Room.tell_info() # ----> 1  拥有cls  就不需要实例化对象了

静态方法

技术图片
class Room:

    tag=1
    def __init__(self,name,owner,width,length,heigh):
        self.name=name
        self.owner=owner
        self.width=width
        self.lenth=length
        self.heigh=heigh
    @property  # 静态属性
    def cal_area(self,):

        return self.heigh*self.width

    def test(self,):

        print(from test,self.name)

    @classmethod  # 变为了类方法
    def tell_info(cls):
        print(cls)
        print(---->, cls.tag)

    @staticmethod  # 静态方法只是名义上归属性管理,不能使用类变量和实例变量,是类的工具包
    def wash_body(a,b,c):
        print(%s %s %s 正在洗澡 %(a,b,c))

    def test(x,y,z):
        print(x,y,z)


Room.wash_body(k,l,o) # k l o 正在洗澡
r1=Room(别墅,憨憨,100,100,100)
r1.wash_body(k,l,o) # k l o 正在洗澡


Room.test(k,l,o) # k l o
r1.test(k,l,o) # 报错了  不能这样调用  因为test 不是静态方法
静态方法

 

Python学习第十六课——静态属性(property, classmethod, staticmethod)

标签:closed   onclick   init   width   技术   length   display   %s   style   

原文地址:https://www.cnblogs.com/pyhan/p/12312083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!