标签:ror pytho odi `` ret prope 情况下 strong student
代码:
```
#!usr/bin/env/python3
# -- coding:utf-8 --
class Student(object):
pass
s = Student()
# 给实例绑定属性
s.name = "123"
print(‘name‘ in dir(s)) # 判断实例中是否有name这个属性 dir()返回的是对象里所有的方法和属性
print(s.name)
# 定义一个方法与实例进行绑定用
def do_func(self):
return ‘me‘
# 给实例绑定一个方法
from types import MethodType
s.get_func = MethodType(do_func,s)
print(s.get_func())
# 给一个实例绑定的方法,对另一个实例是不起作用的
s1 = Student()
# print(s1.name,s1.get_func())
# 给类绑定方法
Student.get_func1 = do_func
# 实例调用类方法
print(s.get_func1(),s1.get_func1())
# 使用__slots__ 限制能绑定的属性
class Plepeo(object):
slots = (‘name‘,‘age‘) # 用tuple定义允许绑定的属性名称
p = Plepeo()
p.name = ‘123‘
p.age = 12
p.addr = ‘China‘ # 报错:AttributeError: ‘Plepeo‘ object has no attribute ‘addr‘
代码:
```
class Student1(object):
# 把一个getter方法变成属性,只需要加上@property就可以了,
# 此时,@property本身又创建了另一个装饰器@score.setter,
# 负责把一个setter方法变成属性赋值,于是,我们就拥有一个可控的属性
@property
def get_score(self): # 得到属性值
return self._score
@get_score.setter
def set_score(self,score): # 设置属性值
if not isinstance(score,int):
raise TypeError('score is int and <= 100')
if score > 100 and score < 0:
raise ValueError('score > 0 ,score < 100')
self._score = score
s1 = Student1()还可以定义只读属性,只定义getter方法,不定义setter方法就是一个只读属性:
标签:ror pytho odi `` ret prope 情况下 strong student
原文地址:https://www.cnblogs.com/thloveyl/p/11444203.html