Python 面向对象介绍

发布时间:2019-03-01 10:36:10编辑:auto阅读(2167)

    一、类的实例化:调用类产生对象的过程称为类的实例化,实例化的结果是一个对象,或称为一个实例
    1 class People:
    2     def __init__(self,name,age,sex):
    3         self.name=name
    4         self.age=age
    5         self.sex=sex
    6 
    7     def run(self):
    8         print('%s is running' %self.name)

    实例化做了三件事
    1、先产生一个空对象
    2、自动触发类内部__init__函数的执行
    3、将空对象,以及调用类括号内传入的参数,一同传给__init__,为对象定制独有的属性
     obj=People('egon',18,'male') #People.__init__(obj,'egon',18,'male')
     会产生对象的名称空间,如何查看
     print(obj.__dict__)

    二;对象的操作
    1  print(obj.name) #obj.__dict__
    2  obj.education='哈佛'
    3  del obj.name
    4  obj.age=19
    5  print(obj.__dict__)

    三:对象属性的查找顺序:先找对象自己的名称空间---->类的名称空间
     1 class People:
     2     x=1
     3     def __init__(self,name,age,sex):
     4         self.name=name
     5         self.age=age
     6         self.sex=sex
     7 
     8     def run(self): self=obj
     9         print('%s is running' %self.name) obj.name
    10 
    11 obj=People('egon',18,'male')     #People.__init__(obj,'egon',18,'male')
    12 obj1=People('egon1',18,'male')   #People.__init__(obj,'egon',18,'male')
    13 obj2=People('egon2',18,'male')   #People.__init__(obj,'egon',18,'male')

     


    1、类的数据属性:是给对象用的,而且直接共享给所有对象用的,内存地址都一样
    1  print(People.x)
    2  People.x=11111
    3 
    4  print(id(People.x),People.x)
    5  obj.x='obj================》'
    6  print(id(obj.x),obj.x)
    7  print(id(obj1.x),obj1.x)
    8  print(id(obj2.x),obj2.x)


    2、类的函数属性:也是给对象用,但是绑定给对象用的,绑定到不同的对象就是不同的
    绑定方法,内存地址都不一样,但其实只想都是同一个功能
    1  print(People.run) 
    >>> <function People.run at 0x00000226E7C78A60> 2 People.run(123123) 3 People.run(obj) 4 5 print(obj.run) 6 print(obj1.run) 7 print(obj2.run)

     



    四:绑定方法的特殊之处:
    1、 绑定给谁就应该由谁来调用,
    2、谁来调用就会把谁当做第一个参数传入
     1 class People:
     2     x=1
     3     def __init__(self,name,age,sex):
     4         self.name=name
     5         self.age=age
     6         self.sex=sex
     7 
     8     def run(self): self=obj
     9         print('%s is running' %self.name) obj.name
    10 
    11     def f1():
    12         print('from f1')
    13 
    14     def f2(self):
    15         pass
    16 
    17 obj=People('egon',18,'male') People.__init__(obj,'egon',18,'male')
    18 obj1=People('egon1',18,'male') People.__init__(obj,'egon',18,'male')
    19 obj2=People('egon2',18,'male') People.__init__(obj,'egon',18,'male')
    20 
    21 obj.run()
    22 obj1.run()
    23 obj2.run()
    24 
    25 print(People.f1)
    26 People.f1()
    27 print(obj.f1)
    28 obj.f1() People.f1(obj)

     




    五:一切皆对象:在python3中统一了类与类型的概念,类即类型
    1 l=list([1,2,3])
    2 print(type(l))
    3 print(type(obj))
    4 l.append(4)

     

关键字