• python-属性的查找与绑定方法


    类的属性:

    类中有两种属性:

      数据属性:类的数据属性是所有对象共享的。

          eg:   在类中定义了一个  school = 'luffycity'  #这个称类的数据属性。

            当这个类生成了多个对象时,这些对象都享有这个数据属性。

       函数属性:类的函数属性是绑定给对象使用的。

         eg: 类中定义了一个 函数:

              def eat():

                print ('is eatting')

            当生成一个stu1对象并使用这个eat方法是时,执行结果只影响stu1

       注意:当定义了一个对象时它的查找顺序如下:

            先由对象的名称空间找属性,当找不到的时候,

            就会从类的名称空间找,再找不到,在父类名称空间找,还是找不到,就会报错。

    绑定方法:

    在类中所定义的函数——是类的函数属性,类自己可以使用,但必须遵守函数的参数规则,有几个参数需要传几个参数。

    class OldboyStudent:
        school='oldboy'
        def __init__(self,name,age,sex):
            self.name=name
            self.age=age
            self.sex=sex
        def learn(self):
            print('%s is learning' %self.name) #新增self.name
    
        def eat(self):
            print('%s is eating' %self.name)
    
        def sleep(self):
            print('%s is sleeping' %self.name)
    
    
    s1=OldboyStudent('李坦克','',18)
    
    print(OldboyStudent.learn(s1)) # 类使用类定义的函数learn ,需要传参。
                                   # 现在把对象s1传进去的意思是
                                   #
    View Code

         注意:1、类中定义的函数主要给对象使用的,且是绑定到对象的。

            2、类定义的函数功能一样,但类绑定到不同的对象,就是不同的绑定方法。

            3、绑定对象的方法的这种自动传值的特征,决定了类中定义的函数都要写一个self参数。

    类即类型:

    python3 中一切皆对象,且python3 中类与类型是同一个概念,类型就是类。

  • 相关阅读:
    【BZOJ1001】狼抓兔子(网络流)
    【BZOJ4554】游戏(二分图匹配,网络流)
    【BZOJ3993】星际战争(网络流,二分答案)
    【BZOJ3140】消毒(二分图匹配)
    【Luogu1393】动态逆序对(CDQ分治)
    【BZOJ3295】动态逆序对(线段树,树状数组)
    【BZOJ1305】跳舞(网络流)
    【BZOJ1934】善意的投票(网络流)
    【BZOJ3932】任务查询系统(主席树)
    【BZOJ3123】森林(主席树,启发式合并)
  • 原文地址:https://www.cnblogs.com/AYxing/p/8993187.html
Copyright © 2020-2023  润新知