3.属性查找与方法

属性查找

类有两种属性:数据属性和函数属性
1.数据属性是共享的,数据属性公用一块内存
2.类的函数数据是绑定给对象用的,称为绑定到对象的方法

class student:
    mingzu='汉族'     #数据属性

    def __init__(self,name,age,sex):   #函数属性
        self.name=name
        self.age=age
        self.sex=sex

    def learn(self):                   #函数属性
        print('is learning')

    def eat(self):                     #函数属性
        print('is eating')

    def sleep(self):                   #函数属性
        print('is sleeping')


student1=student('张三',18,'male')
student2=student('李四',20,'male')
student3=student('王二丫',18,'female')

#数据属性是共享的
print(id(student.mingzu))  #3070164795616
print(id(student1.mingzu)) #3070164795616
print(id(student2.mingzu)) #3070164795616
print(id(student3.mingzu)) #3070164795616

#函数属性绑定到相应的对象
print(id(student.learn))  #2380961904432
print(id(student1.learn)) #2380959923400
print(id(student2.learn)) #2380959923400
print(id(student3.learn)) #2380959923400
绑定的方法

类中定义的函数(没有被任何装饰器装饰的)是类的函数属性,类可以使用,但必须遵循函数的参数规则,有几个参数需要传几个参数
强调:绑定到对象的方法的特殊之处在于,绑定给谁就由谁来调用,谁来调用,就会将‘谁’本身当做第一个参数传给方法,即自动传值(方法__init__也是一样的道理)

class student:
    mingzu='汉族'     #数据属性

    def __init__(self,name,age,sex):   #函数属性
        self.name=name
        self.age=age
        self.sex=sex

    def learn(self):                   #函数属性
        print('%s is learning' %self.name)

    def eat(self):                     #函数属性
        print('%s is eating' %self.name)

    def sleep(self):                   #函数属性
        print('%s is sleeping' %self.name)


student1=student('张三',18,'male')
student2=student('李四',20,'male')
student3=student('王二丫',18,'female')

student1.learn() #等价于student.learn(student1)
student2.learn() #等价于student.learn(student2)
student3.learn() #等价于student.learn(student3)

student.learn(student1)
#运行结果:
# 张三 is learning
# 李四 is learning
# 王二丫 is learning

注意:绑定到对象的方法的这种自动传值的特征,决定了在类中定义的函数都要默认写一个参数self,self可以是任意名字,但是约定俗成地写出self。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值