760176104 发表于 2018-8-11 06:46:45

python面向对象——类属性和实例属性

#coding:utf-8  

  

  
#描述橘子对象的类
  
class Orange:
  

  
    def __init__(self, weight):
  
      self.weight = weight #实例属性
  

  
    def get_weight(self):
  
      print(self.weight)
  

  

  
class HostInfo:
  

  
    info = [] #类属性
  

  
    def add_host(self, hostname, ip):
  
      self.info.append({"hostname":hostname, "ip":ip})
  
    def get_info(self):
  
      print(self.info)
  

  
if __name__ == "__main__":
  

  
    o1 = Orange(1.5) #橘子1 重量1.5
  
    o2 = Orange(2.3) #橘子2 重量2.3
  

  
    o1.get_weight() #获取重量
  
    o2.get_weight()
  

  
#橘子1的重量是1.5,橘子2的重量是2.3,这个所谓的重量(数据)被称为属性,属性通常是可变的,
  
#橘子类的每一个实例都会有重量这个属性,但是每个实例的属性给定的数据会不相同,也可能相同
  

  

  
    h1 = HostInfo() #对象h1增加数据
  
    h1.add_host("pc","192.168.1.2")
  

  
    h2 = HostInfo() #对象h2增加两条数据
  
    h2.add_host("pc","192.168.1.2")
  
    h2.add_host("pc","192.168.1.2")
  

  
    h1.get_info() #不管是谁添加,大家都能获取到主机信息,
  
    h2.get_info()
  

  
#结论:类属性共享于所有实例,实例属性只属于实例本身
页: [1]
查看完整版本: python面向对象——类属性和实例属性