python3自学之路-笔记22—面向对象编程-类的只读属性,新式类与经典类
2019-04-03 21:30
309 查看
python3自学之路-笔记22—面向对象编程-类的只读属性,新式类与经典类
[code]#!/usr/bin/env python3 # _*_ coding: utf-8 _*_ # File : 类的只读属性.py # Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------ # Date : 2019/4/3 #方法1,禁用属性的读写操作,再部分公开。私有化属性 class person: def __init__(self): self.__age=18 def getAge(self): return self.__age p1=person() p1.age=5 print(p1.__dict__) print(p1.getAge()) #方法2 可读,但是写时不允许,会报错。利用装饰器pronperty加上函数 class person1(object): def __init__(self): self.__age = 18 #可以用使用属性方式使用下面方法。装饰器 @property def Age(self): return self.__age p2 = person1() p2.age = 5 print(p2.__dict__) print(p2.Age) # p2.Age=666 赋值会报错
[code]#!/usr/bin/env python3 # _*_ coding: utf-8 _*_ # File : 经典类和新式类.py # Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------ # Date : 2019/4/3 #方法1 class person: def __init__(self): self.__age=18 def get_age(self): return self.__age def set_age(self,value): self.__age=value age=property(get_age,set_age) print(person.__bases__) p=person() print(p.age) p.age=90 print(p.age) print(p.__dict__) #方法2 class person1: def __init__(self): self.__age=18 @property def age(self): return self.__age @age.setter def age(self,value): self.__age=value p1=person1() print(p1.age) p1.age=20 print(p1.age) print(p1.__dict__)
类的私有化屏蔽,只读:
[code]#!/usr/bin/env python3 # _*_ coding: utf-8 _*_ # File : 类私有屏蔽.py # Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------ # Date : 2019/4/3 class Person: def __setattr__(self, key, value): print(key, value) if key == "age" and key in self.__dict__.keys(): print("only read") else: # self.key=value #不要这么搞,这是死循环 self.__dict__[key] = value p = Person() p.age = 18 print(p.age) p.age = 999 print(p.age) print(p.__dict__)
相关文章推荐
- 初学Python的学习笔记9----面向对象编程(获取对象信息、实例属性和类属性)、面向对象高级编程(使用__slots__、使用@property)
- python笔记: 经典类和新式类的区别
- Python自学之路第十三步——修改属性的值
- Python自学笔记 - 5.list和tuple
- python 学习笔记7 面向对象编程
- Python学习笔记 7—面向对象编程
- scala学习笔记————如何实现类里的只读属性
- Python核心编程笔记 - 第13章 面向对象编程(二)
- python语言的自学之路3
- Python自学笔记之高级特性1——切片和迭代
- python自学之路第一天
- Python学习笔记——面向对象编程
- python学习笔记-实例方法、类方法、静态方法、属性方法
- Python自学之路第二步——字符串的处理
- python自学之路-01
- 征服Python学习笔记 不断更新--学习之路
- python的自学之路
- Python学习笔记13:Python面向对象编程
- Python简明教程学习笔记5--面向对象编程
- python全栈自学之路