python动态方法_Python动态绑定属性方法

python是动态语言,可以为实例动态绑定属性、方法,也可以为类动态绑定方法。即在用到的时候定义。为实例动态绑定的属性、方法,其它实例不可用。类绑定的方法,所有类实例都可以用。

class Animal(object):

def __init__(self, name, num):

self.name = name

self.num = num

def printNum(self):

print("%s有%s个" % (self.name, self.num))

d = Animal("哈士奇", 88)

动态给实例绑定属性

d.width = 90

print(d.width) ----------> 90

动态给实例绑定方法

def setLength(self, length):

self.length = length

from types import MethodType

d.setLength = MethodType(setLength, d)

d.setLength(99)

print(d.length) ----------> 99

动态给类绑定方法

def setColor(self, color):

self.color = color

Animal.setColor = setColor

d.setColor("black")

print(d.color) ----------> black

slots:

可以限制类实例绑定属性,实例只能绑定slots指定的属性

class Animal(object):

__slots__ = ("name", "num")

d = Animal()

d.name = "哈士奇"

print(d.name)

d.color = "black" #因为__slots__没有包括"color"属性,所以不可用

print(d.color)

d621325753a4?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

slots对子类不起作用。但如果子类也定义了slots,则子类的实例属性是子类和父类的slots共同限制的。

class Cat(Animal):

pass

c = Cat()

c.color = "white"

print(c.color)

class Dog(Animal):

__slots__ = ("legth", "width")

dog = Dog()

dog.color = "yellow"

print(dog.color)

d621325753a4?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值