Python对象属性

属性:

1. 数据属性--变量

2. 函数属性--方法

 

类的属性基本操作

class Chinese:
   # 类属性
    color = 'yellow'
    def __init__(self):
        pass
    def method(self):
        print('吹牛逼')


# 1.查看类属性
Chinese.color
# 2.修改类属性
Chinese.color='BLACK'
# 3.增加类属性
Chinese.city='BeiJing'
# 4.删除类的属性
del Chinese.color

 实例属性的基本操作

  

class Chinese:
   # 类属性
    color = 'yellow'
    def __init__(self):
        self.name='jack'
    def method(self):
        print('吹牛逼')


p=Chinese()
# 1. 调用实例属性
p.name
# 2. 新增实例属性
p.age=32
# 3. 删除实例属性
del p.age
# 4. 修改实例属性
p.name='rose'

 

 静态属性

 使用 @property

class Room:
    def __init__(self,width,height):
        self.width=width
        self.height=height
    
    """将方法变为静态属性,调用时直接使用对象调用不用像调用方法一样使用 括号, 让用户在调用时完全感觉不到,就像是在调用普通属性一样。"""
    @property
    def mianji(self):
        return  self.width*self.height



r=Room(100,200)
val=r.mianji

 使用@property ,同时搭配它的 set 或 del 方法

class Food:

    def __init__(self):
        self.base_price=5
        self.kg=3

    @property
    def price(self):
        return self.base_price * self.kg

    @price.setter
    def price(self,value):
        self.base_price=value

    @price.deleter
    def price(self):
        del self.base_price

obj=Food()
print(obj.price)
obj.price=10
print(obj.price)
del obj.price
print(obj.price)

 

 

 

 

 

类方法

使用 @classmethod

class Demo:
    tag='tag'
    
    """类方法,支持使用类名来直接调用,但是该方法无法参与实例的操作,因为缺少 self实例参数的支持"""
    @classmethod
    def func(cls,name):
        print(cls) # <class '__main__.Demo'>
        print(cls.tag) # tag
        print(name)  #jack

Demo.func('jack')

 

 

静态方法

使用 @staticmethod  , 静态方法一般作为类的工具包来使用,常见有作为公用 utils

class Demo:
    tag='tag'

    """静态方法,支持类名直接调用,也支持对象来调用,但是方法内部不能使用类属性变量和实例属性变量,因为没有 cls 或 shelf """
    @staticmethod
    def func(name,age):
        print(name,age)

Demo.func('jack',23)
obj=Demo()
obj.func('rose',32)

 

posted @ 2020-11-09 23:01  leungqingyun  阅读(229)  评论(0)    收藏  举报