Python动态添加属性

class Student(object):
    #@classmethod修饰的属性可以通过类变量和类实例变量直接调用
    #因为在这两种情况下都可以将类变量绑定到@classmethod修饰的方法的第一个参数上
    @classmethod
    def eat(cls):
        print('eating...')

#当类的实例动态添加属性时
class function_1():
    print('function_1')
s = Student()
s.function_1 = function_1
print(s.function_1)
#当类变量动态添加属性时(重点)
class function_2():
    print('function_2')
Student.function_2 = function_2
print(Student.function_2())
#当执行如下语句会报错,原因在于当类实例调用方法时,该方法必须要有一个参数,因为该实例会绑定到该参数#上,这个参数名一般为self,当然也可以时其他名字.
s2 = Student()
s2.function_2()
#如果时这样就没问题了
class function_3(self):
    #当Student对象调用时,self类型为Student
    print(type(self))
    print('function_3')
Student.function_3 = function_3
#如果是直接调用该函数的话必须传入一个参数(不一定是该类的实例),例如:
Student.function_3('Xixi')
#如果是通过类的实例来调用该函数的话则不用传递第一个参数(默认会传递该实例本身绑定到第一个参数)
#且必须要有一个参数
s3 = Student()
print(s3.function_3)








 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值