003---属性查找和绑定方法

属性查找与绑定方法

属性查找

类有两种属性:数据属性和函数属性

class LuffyStudent:
    school = 'Luffy'

    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age = age

    def learn(self, class_name):
        print('%s 正在学习 %s' % (self.name, class_name))

    def eat(self):
        print('吃东西')

    def sleep(self):
        print('睡觉')

s1 = LuffyStudent('王青', '女', 18)
s2 = LuffyStudent('江子牙', '男', 21)
  • 类的数据属性是共享的,在内存中只存在一份。
# 类中的数据属性是类属性,是所有对象共有的,在内存中只有一份
print(LuffyStudent.school,id(LuffyStudent.school))  # Luffy 2243589824616
print(s1.school,id(s1.school))                      # Luffy 2243589824616
print(s2.school,id(s2.school))                      # Luffy 2243589824616
  • 类的函数属性是绑定给对象用的,绑定到对象的内存地址都不一样。
# 类中的函数属性:是绑定给对象,绑定到不同对象
print(LuffyStudent,)
print(s1.learn)       # bound method LuffyStudent.learn of <__main__.LuffyStudent object at 0x000001CC059EED30
print(s2.learn)       # bound method LuffyStudent.learn of <__main__.LuffyStudent object at 0x000001CC059EED68

绑定方法

定义类并实例化三个对象

    class LuffyStudent:
        school = 'Luffy'

        def __init__(self, name, sex, age):
            self.name = name
            self.sex = sex
            self.age = age

        def learn(self, class_name):
            print('%s 正在学习 %s' % (self.name, class_name))

        def eat(self):
            print('吃东西')

        def sleep(self):
            print('睡觉')

    s1 = LuffyStudent('王青', '女', 18)
    s2 = LuffyStudent('江子牙', '男', 21)
    s3 = LuffyStudent('江薏米', '女', 0)
  • 类中定义的方法(没有加任何装饰器的),类可以使用,但必须遵循函数的参数规则,有个参数self
# 类调用函数
LuffyStudent.learn(s1,'Java')  # 王  青 正在学习 Java
LuffyStudent.learn(s2,'Linux') # 江子牙 正在学习 Linux
  • 其实这种方法并不是给类使用的,而是给对象用的,而且是绑定到对象的。虽然所有对象都指定一样的方法,但是绑定到不同对象就是不同的绑定方法。
  • 特殊之处就是,绑定给谁,谁就来调用。就会将它自己作为第一个参数传给绑定方法,即自动传值(init()也是一样)
# 对象调用函数:自动把对象传给self
s3.learn('C++')              # 江薏米 正在学习 C++
s1.learn('Go')               # 王  青 正在学习 Go
  • 注意:这种自动传值的特征,决定了类中定义的函数都要默认写一个参数self,不是固定名字,至少约定成俗的写出self。就像是一种规范

原文地址:https://www.cnblogs.com/xjmlove/p/10319098.html

时间: 2024-08-28 16:50:03

003---属性查找和绑定方法的相关文章

属性查找与绑定方法

属性查找 类有两种属性:数据属性和函数属性 1.类的数据属性是所有对象共享的 class LuffyStudent: school='luffycity' def learn(self): print('is learning') def eat(self): print('is sleeping') #后产生对象 stu1=LuffyStudent() stu2=LuffyStudent() stu3=LuffyStudent() print(id(stu1.school)) print(id

python:属性查找与绑定方法

属性查找 类有两种属性:数据属性和函数属性 1.类的数据属性是所有对象共享的 # 类的数据属性是所有对象共享的,id是一样的 print(id(OldboyStudent.school)) # 4830576 print(id(s1.school)) # 4830576 print(id(s2.school)) # 4830576 print(id(s3.school)) # 4830576 2. 类的函数属性是绑定给对象用的,称为绑定到对象的方法 # 类的函数属性是绑定给对象使用的,obj.m

类属性查找与绑定方法

class luffystudent: def __init__(self,name,sex,age): self.name=name self.sex=sex self.age=age school='luffycity' def learn(self,x): print('%s is learning %s' %(self.name,x)) def eat(self): print('is eating') def sleep(self): print('is sleeping') #后产生

属性查找;绑定到对象的方法的特殊之处;对象之间的交互

四 属性查找 类有两种属性:数据属性和函数属性 1. 类的数据属性是所有对象共享的 2. 类的函数属性是绑定给对象用的 #类的数据属性是所有对象共享的,id都一样 print(id(OldboyStudent.school)) print(id(s1.school)) print(id(s2.school)) print(id(s3.school)) ''' 4377347328 4377347328 4377347328 4377347328 ''' #类的函数属性是绑定给对象使用的,obj.

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

类的属性: 类中有两种属性: 数据属性:类的数据属性是所有对象共享的. eg:   在类中定义了一个  school = 'luffycity'  #这个称类的数据属性. 当这个类生成了多个对象时,这些对象都享有这个数据属性. 函数属性:类的函数属性是绑定给对象使用的. eg: 类中定义了一个 函数: def eat(): print ('is eatting') 当生成一个stu1对象并使用这个eat方法是时,执行结果只影响stu1 注意:当定义了一个对象时它的查找顺序如下: 先由对象的名称空

beautifulsoup 根据class属性查找标签的方法。

写爬虫的时候遇到的: 导入beautifulSoup后, 查找类似<div  class = "abcd">的时候, 直接使用beautifulsoup的方法: soup.findall("div", class="abcd") 这样写的时候回报错, 按照官方的一种方法写在class后加“_“试了试没什么用.虽说不报错,但返回的时空,匹配不到值, 使用另一种方法: soup.findAll(name="div",

第十一章、对象属性查找顺序与属性和方法

目录 第十一章.对象属性查找顺序与属性和方法 一.属性查找 二.对象赋属性 三.绑定方法 第十一章.对象属性查找顺序与属性和方法 一.属性查找 对象自身-->子类-->父类(多继承)-->报错 二.对象赋属性 方式一:给自己对象加一个属性 student=Student() student.name='nick' 方拾二:__init__()方法内赋值 方式三:对象.方法 change_name(self,name) self.name='nick' 三.绑定方法 定义在类内部的方法 类

绑定与非绑定方法 继承 继承与抽象 查找属性关系 派生与覆盖 访问父类的内容

类属性与对象属性 类中应该仅存储所有对象共有的内容 如所有人的国籍相同那就放到类中 对象中存储每个对象独有的内容 ? 如每个人的名字都不同 初始化函数class Person: color = 'white' def read(self): print('hamlet') # 创建对象 也称之为实例化 产生的对象也称之为实例a1=Person()print(a1)print(a1.color)print(a1.__dict__) a2 = Person()print(a2)print(a2.re

面向对象二次整理(基础,属性引用,方法引用.绑定方法)

概念之类的去百度一下... 基础 类 属性 实例变量 类变量(默认共享) 私有属性(__var) 方法 构造方法 析构方法或析构函数 私有方法 对象: 实例化一个类之后得到的对象 封装 把一些功能的实现细节不对外暴露 类的初始化(__init__): 就是给对象定义一些自己的特征,不能有返回值 继承 代码的重用 单继承 多继承 2.7的经典类-->深度优先,新式类-->广度优先 3.x 均是广度优先 class Foo() 多态 接口重用,一种接口,多种实现 高级属性: 静态方法 与类无关,不