Python中类和实例关系

来源:互联网 发布:手机电子琴软件 编辑:程序博客网 时间:2024/05/17 22:48

类是实例工厂。类的属性提供了行为(数据以及函数),所有从类产生的实例都继承该类的属性

类对象提供默认行为

  • class语句创建类对象并将其赋值给变量名
  • class语句内的赋值语句会创建类的属性
  • 类属性提供对象的状态和行为

实例

代表程序领域中具有的元素。实例属性记录数据,而每个特定对象的数据都不同

实例对象是具体的元素

  • 像函数那样调用类对象会创建新的实例对象
  • 每个实例对象继承类的属性并获得了自己的命名空间
  • 在方法内对self属性做赋值运算会产生每个实例自己的属性

类和实例的主要差异在于,类是一种产生实例的工厂。

下面看看一个例子

class FirstClass(object):    def setdata(self, value):        self.data = value    def display(self):        print self.data
>>> fc = FirstClass()>>> fc.setdata('Hello Python')>>> fc.display()Hello Python# ****************************>>> fc.__class__.__name__    # fc实例继承的类'FirstClass'# ***************************>>> fc.name = 'Flask'   # 为实例新增属性name>>> dir(fc) ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'display', 'name', 'setdata']>>> dir(FirstClass) ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'display', 'setdata']# name仅fc对象才有,FirstClass没有name属性# ***************************>>> FirstClass.age = 25 # 类新增age属性>>> dir(FirstClass)['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'display', 'setdata']>>> dir(fc)['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'display', 'name', 'setdata'] # 在类中新增的属性,类的实例对象也会具有此属性,因为实例继承类的属性
0 0
原创粉丝点击