类属性property
作用:1.property可以定义一个方法为私有属性的名字,让用户可以访问年,但不能修改,可以保护数据的安全性
2.@属性名.setter给私有属性赋值时,先做判断
3.@属性名.deleter使用内置del删除属性的时候,自动执行的内容
class Student(object):
def __init__(self,name,age,source):
self.name = name
self.__age = age
self.__source = source
@property
def age(self):
return self.__age
@age.setter
def age(self,value):
if isinstance(value,int) and 0< value <100:
self.__age = value
print "age%s" %(self.__age)
else:
self.__age = 0
print "error"
@age.deleter
def age(self):
print "age:%s can not delete" %(self.__age)
student = Student("tom",12,80)
print student.age
student.age = 120
print student.age
第二种方法:property(get,fset,fdel,fdoc)
class Student(object):
def __init__(self,name,age,source):
self.name = name
self.__age = age
self.__source = source
def get_age(self):
return self.__age
def set_age(self,value):
if isinstance(value,int) and 0< value <100:
self.__age = value
print "age:%s" %(self.__age)
else:
self.__age = 0
print "error"
def del_age(self):
print "age:%s can not delete" %(self.__age)
age = property(get_age,set_age,del_age)
student = Student("tom",12,80)
print student.age
student.age = 66
print student.age
del student.age
1.主机信息的分页显示
2.当用户选择第N页的时候,显示该页需要的数据从那条开始,那条结束
3.将start,end返回给后端,将需要的数据响应给前端
#!/usr/bin/env python
# coding:utf-8
hostinfo = ['172.25.254.'+ str(i) for i in range(1,101)] #列表生成式,自定义主机
信息
class page(object):
def __init__(self,current_page,per_items):
#显示第N页的信息
self.__current_page = current_page
#每页显示多少条信息
self.__per_items = per_items
@property
def start(self):
val = (self.__current_page-1)*self.__per_items
return val
@property
def end(self):
val = self.__current_page*self.__per_items
return val
p = page(4,6)
print hostinfo[p.start:p.end]
1.私有属性:类内部可以访问,对象不能访问;子类不能访问,子类的对象不能访问
2.共有属性:私有属性可以和不可以访问的都可以访问
#!/usr/bin/env python
# coding:utf-8
class student(object):
def __init__(self,name,source):
self.name = name
self.__source = source
def __judge(self):
if 90< self.__source <=100:
print "A"
elif 70< self.__source <=90:
print "B"
else:
print "D"
class mathstudent(student):
def getsource(self):
print self.__source
student1 = student("tom",91)
print student1._student__source
student1._student__judge()
student2 =mathstudent ("lali",69)
print student2.name
print student2._student__source
# __source为私有属性,不能直接访问,访问时必须在前面加上那个它所属的类
1.__str__:当打印对象时自动调用
2.__repr__:当在交互式环境中,直接输入对象的时候自动调用
3.如果__str__没有定义的时候,那么打印对象自动调用__repr__
自定义字符串的格式
1.__format__
#!/usr/bin/env python
# coding:utf-8
_formats = {
'ymd':'{d.year}/{d.month}/{d.day}',
'mdy':'{d.month}/{d.day}/{d.year}',
'dmy':'{d.day}/{d.month}/{d.year}'
}
class data(object):
def __init__(self,year,month,day):
self.year = year
self.month = month
self.day = day
def __format__(self,code):
if code == '':
code = 'ymd'
fmt = _formats[code]
return fmt.format(d=self)
d = data(1995,10,18)
print format(d)
print format(d,'mdy')
索引:__getitems__和__setitems__和__delitems__
#!/usr/bin/env python
# coding:utf-8
class student(object):
def __init__(self,name,age):
self.name = name
self.__age = age
def get_age(self):
return self.__age
def __getitem__(self,item):#当访问某个属性时,自动执行的魔术方法
return None
def __setitem__(self,key,value): #给属性赋值时自动调用的方法
self.__dict__[key] = value
print "ok"
def __delitem__(self,key): #删除属性时自动调用的方法
del self.__dict__[key]
print "del ok"
s = student("tom",18)
print s.__dict__
s['name'] = 'huba'
del s['name']
切片: __getslice__和__setslice__和__delslice__
#!/usr/bin/env python
# coding:utf-8
class student(object):
def __init__(self,name,age):
self.name = name
self.__age = age
def __getslice__(self,i,j):
print "get",i,j
def __setslice__(self,i,j,item):
print "get",i,j,item
def __delslice__(self,i,j):
print "del",i,j
s = student("tom",18)
s[0:3]
s[0:3] = [13,45,69]
作用:1.property可以定义一个方法为私有属性的名字,让用户可以访问年,但不能修改,可以保护数据的安全性
2.@属性名.setter给私有属性赋值时,先做判断
3.@属性名.deleter使用内置del删除属性的时候,自动执行的内容
class Student(object):
def __init__(self,name,age,source):
self.name = name
self.__age = age
self.__source = source
@property
def age(self):
return self.__age
@age.setter
def age(self,value):
if isinstance(value,int) and 0< value <100:
self.__age = value
print "age%s" %(self.__age)
else:
self.__age = 0
print "error"
@age.deleter
def age(self):
print "age:%s can not delete" %(self.__age)
student = Student("tom",12,80)
print student.age
student.age = 120
print student.age
第二种方法:property(get,fset,fdel,fdoc)
class Student(object):
def __init__(self,name,age,source):
self.name = name
self.__age = age
self.__source = source
def get_age(self):
return self.__age
def set_age(self,value):
if isinstance(value,int) and 0< value <100:
self.__age = value
print "age:%s" %(self.__age)
else:
self.__age = 0
print "error"
def del_age(self):
print "age:%s can not delete" %(self.__age)
age = property(get_age,set_age,del_age)
student = Student("tom",12,80)
print student.age
student.age = 66
print student.age
del student.age
1.主机信息的分页显示
2.当用户选择第N页的时候,显示该页需要的数据从那条开始,那条结束
3.将start,end返回给后端,将需要的数据响应给前端
#!/usr/bin/env python
# coding:utf-8
hostinfo = ['172.25.254.'+ str(i) for i in range(1,101)] #列表生成式,自定义主机
信息
class page(object):
def __init__(self,current_page,per_items):
#显示第N页的信息
self.__current_page = current_page
#每页显示多少条信息
self.__per_items = per_items
@property
def start(self):
val = (self.__current_page-1)*self.__per_items
return val
@property
def end(self):
val = self.__current_page*self.__per_items
return val
p = page(4,6)
print hostinfo[p.start:p.end]
1.私有属性:类内部可以访问,对象不能访问;子类不能访问,子类的对象不能访问
2.共有属性:私有属性可以和不可以访问的都可以访问
#!/usr/bin/env python
# coding:utf-8
class student(object):
def __init__(self,name,source):
self.name = name
self.__source = source
def __judge(self):
if 90< self.__source <=100:
print "A"
elif 70< self.__source <=90:
print "B"
else:
print "D"
class mathstudent(student):
def getsource(self):
print self.__source
student1 = student("tom",91)
print student1._student__source
student1._student__judge()
student2 =mathstudent ("lali",69)
print student2.name
print student2._student__source
# __source为私有属性,不能直接访问,访问时必须在前面加上那个它所属的类
1.__str__:当打印对象时自动调用
2.__repr__:当在交互式环境中,直接输入对象的时候自动调用
3.如果__str__没有定义的时候,那么打印对象自动调用__repr__
自定义字符串的格式
1.__format__
#!/usr/bin/env python
# coding:utf-8
_formats = {
'ymd':'{d.year}/{d.month}/{d.day}',
'mdy':'{d.month}/{d.day}/{d.year}',
'dmy':'{d.day}/{d.month}/{d.year}'
}
class data(object):
def __init__(self,year,month,day):
self.year = year
self.month = month
self.day = day
def __format__(self,code):
if code == '':
code = 'ymd'
fmt = _formats[code]
return fmt.format(d=self)
d = data(1995,10,18)
print format(d)
print format(d,'mdy')
索引:__getitems__和__setitems__和__delitems__
#!/usr/bin/env python
# coding:utf-8
class student(object):
def __init__(self,name,age):
self.name = name
self.__age = age
def get_age(self):
return self.__age
def __getitem__(self,item):#当访问某个属性时,自动执行的魔术方法
return None
def __setitem__(self,key,value): #给属性赋值时自动调用的方法
self.__dict__[key] = value
print "ok"
def __delitem__(self,key): #删除属性时自动调用的方法
del self.__dict__[key]
print "del ok"
s = student("tom",18)
print s.__dict__
s['name'] = 'huba'
del s['name']
切片: __getslice__和__setslice__和__delslice__
#!/usr/bin/env python
# coding:utf-8
class student(object):
def __init__(self,name,age):
self.name = name
self.__age = age
def __getslice__(self,i,j):
print "get",i,j
def __setslice__(self,i,j,item):
print "get",i,j,item
def __delslice__(self,i,j):
print "del",i,j
s = student("tom",18)
s[0:3]
s[0:3] = [13,45,69]
del s[0:3]