python 父类方法中使用不同的子类中的不同类对象

 1 # coding:utf-8
 2 
 3 
 4 class Animal(object):
 5     def __init__(self):
 6         self._name = None
 7         self._f = None
 8 
 9     def eat(self):
10         print("%s吃%s" % (self._name, self._f().food()))
11 
12 
13 class Dog(Animal):
14     def __init__(self):
15         Animal.__init__(self)
16         self._f = DogFood
17         self._name = ""
18 
19 
20 class DogFood():
21     def food(self):
22         return "狗粮"
23 
24 
25 class Cat(Animal):
26     def __init__(self):
27         Animal.__init__(self)
28         self._name = ""
29         self._f = CatFood
30 
31 
32 class CatFood():
33     def food(self):
34         return "猫粮"
35 
36 
37 dog = Dog()
38 dog.eat()
39 cat = Cat()
40 cat.eat()
View Code

狗吃狗粮
猫吃猫粮

 1 # coding:utf-8
 2 
 3 
 4 class CatFood():
 5     def food(self, food_name):
 6         self.food_name = food_name
 7 
 8 cf = CatFood
 9 
10 cf1 = CatFood()
11 cf1.food("")
12 cf2 = CatFood()
13 cf2.food("")
14 
15 print(cf1.food_name)
16 print(cf2.food_name)
View Code


 1 # coding:utf-8
 2 
 3 
 4 class CatFood():
 5     def food(self, food_name):
 6         self.food_name = food_name
 7 
 8 cf = CatFood
 9 
10 cf1 = CatFood()
11 cf1.food("")
12 cf2 = CatFood()
13 cf2.food("")
14 
15 print(CatFood)
16 print(cf)
17 print(cf1)
View Code

<class '__main__.CatFood'>
<class '__main__.CatFood'>
<__main__.CatFood object at 0x000000000279B320>

cf CatFood 是类对象

cf1是实例对象

 

原文地址:https://www.cnblogs.com/cfpl/p/12037419.html