1 class days(object):
2 def __init__(self, food):
3 self.food = food
4
5 @staticmethod # 实际和类没有关系
6 def tell(self):
7 print('这里有%s,%s快来' % (self.food, 'name'))
8
9
10 a = days('香蕉')
11 a.tell(a)
1 lass f2(object):
2 name = '大哥大大' # 类变量
3
4 def __init__(self, name):
5 self.name = name
6
7 @classmethod
8 def eat(self):
9 print('这里有%s,【%s】' % (self.name, '类的方法'))
10
11
12 f2.eat()
由属性的定义和调用要注意一下几点: 1 定义时,在普通方法的基础上添加 @property 装饰器; 2 定义时,属性仅有一个self参数 3 调用时,无需括号 属性的定义有两种方式: 1 装饰器 即:在方法上应用装饰器 2 静态字段 即:在类中定义值为property对象的静态字段
经典类,具备一种@property装饰器:
1 class f3(object):
2 def __init__(self, name):
3 self.name = name
4 self.__food = None
5
6 @property
7 def eat2(self):
8 print('这里%s,【%s】' % (self.name, '在干什么'))
9
10
11 c = f3('阿猪')
12 c.eat2
新式类,具备三种@property装饰器,分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法。
1 class f4(object):
2 def __init__(self, name):
3 self.name = name
4 self.__food = None
5
6 @property # 把一个普通方法变为属性方法,获取
7 def eat(self):
8 print('这里%s,【%s】' % (self.name, self.__food)) # 因为没有参数self.__food在这没有调用
9
10 @eat.setter # 修改
11 def eat(self, food):
12 print('我要吃%s' % food)
13 self.__food = food
14
15 @eat.getter # 删除
16 def eat(self):
17 del self.__food
18 print('删除字段self.__food')
19
20
21 d = f4('阿豪')
22 d.eat
23 d.eat = '饺子'
24 del d.eat
25 d.eat