提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、什么是私有化?
  • 二、私有化的处理-装饰器
  • 三. 继承的案例
  • 四 继承的顺序
  • 五 工资案例

前言

本文主要介绍私有化的属性


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是私有化?

#私有化
#封装 1.私有化属性 2.公有set和get方法
#__属性 就是将属性私有化,访问的空间仅仅限于类中
‘’’
好处:
1.隐藏属性不被外界随意修改
2.也可以修改:通过函数
def setXXX(self,xxx):
3.选择修改的内容
if 条件 是否符合条件
else:
不赋值
3.如果想获取具体的某一个属性
def getxxx(self):
:return self._xxx

‘’’

class Student:#__age= 18 #类属性def __init__(self,name,age):self.__name=nameself.__age=ageself.__score= 59#定义公有的set和get方法#set是为了赋值def setAge(self,age):self.__age=ageif age>0 and age <=120:self.__age=ageelse:print('年龄不再规定的范围内')def setName(self,name):if len(name)==6:self.__name=nameelse:print('名字不是六位')#get是为了取值def getAge(self):return self.__agedef getName(self):return self.__namedef __str__(self):return '姓名:{},年龄:{},考试分数:{}'.format(self.__name,self.__age,self.__score)yupeng=Student('yupeng',18)
print(yupeng)
yupeng.setAge(20)
yupeng.setName('yupenga')
age=yupeng.getAge()
print(age)
print(yupeng)feifei=Student('feifei',80)
print(feifei)# yupeng.age=21
# yupeng.__score=95
# print(yupeng)

二、私有化的处理-装饰器

#在开发中看到一些私有化处理:装饰器class Student:# __age= 18 #类属性def __init__(self, name, age):self.name = nameself.__age = ageself.__score = 59# 定义公有的set和get方法# set是为了赋值# 先有getxxx:@propertydef age(self):return self.__age#再有set,因为set依赖get@age.setterdef age(self,age):if age >0 and age<100:self.__age-ageelse:print('不在规定的范围内')## def setAge(self, age):#     self.__age = age#     if age > 0 and age <= 100:.#         self.__age = age#     else:#         print('年龄不再规定的范围内')### # get是为了取值## def getAge(self):#     return self.__agedef __str__(self):return '姓名:{},年龄:{},考试分数:{}'.format(self.name, self.__age, self.__score)s=Student('peng',20)
s.name='xiaopeng'
print(s.name)s.age=101
print(s.age)
print(s.__dir__())# #私有化
# s.setAge(30)
# print(s.getAge())

三. 继承的案例

#继承:is a , has a
'''
公路(Road):   属性: 公路名称,公路长度
车(Car):属性:车名,时速方法: 1.求车名正在哪条公路上以多少的时速行驶了多长.get_time(self,road)2.初始化车属性信息__init__方法3.打印对象显示车的属性信息'''
import random
class Road:def __init__(self,name,len):self.name=nameself.len=len
class Car:def __init__(self,brand,speed):self.brand=brandself.speed=speeddef get_time(self,road): #r 与 road 指向同一个地址ran_time=random.randint(1,10)msg='{}品牌的车在{}上以{}速度行驶{}小时'.format(self.brand,road.name,self.speed,ran_time)print(msg)def _str_(self):return '{}品牌的速度是{}'.format(self.brand,self.speed)#创建实例化对象
r= Road('京藏高速',12000) #name len
print(r.name)
r.name='京哈高速'aodi=Car('奥迪',120)
print(aodi)
aodi.get_time(r) #对象

# student book computer
'''知识点:1. has a 一个类中使用了一种自定义类型student 使用computer book2. 类型:系统类型:str int floatlist dict tuple set自定义类型算是自定义的类,都可以将其当做类'''
class  Computer:def __init__(self,brand,type,color):self.brand=brandself.type=typeself.color=colordef online(self):print('正在使用电脑上网')def __str__(self):return self.brand + '====' + self.type+'---'+self.colorclass Book:def __init__(self,bname,autor,number):self.bname=bnameself.autor=autorself.name=numberclass Student:def __init__(self,name,computer,book):self.name=nameself.computer=computerself.books=[]self.books.append(book)def borrow_book(self, book):for book1 in self.books:if book1.bname==book.bname:print('已经借过此书!')breakelse:#将参数book 添加到列表中self.books.append(book)print('已经添加成功')def show_book(self):for book in self.books:  #book就是book对象print(book.bname)def __str__(self):return  self.name+'----'+str(self.computer)+'----'+str(self.books)#创建对象
computer=Computer('mac','mac pro 2018','深灰色')book= Book('盗墓笔记','南派三叔',10)stu=Student('songsong',computer,book)
print(stu)# 看借了那些书book1=Book('鬼吹灯','天下霸唱',8)stu.borrow_book(book1)print('-----------------')stu.show_book()

四 继承的顺序

# is a   base class   父类  基类
# Exception
'''
继承:Student,Employee,Doctor  ---》 都属于人类相同代码 ---》 代码冗余,可读性不高将相同代码提取----》Person类Student,Employee,Doctor  ---》 继承Personclass Student(Person):pass特点:1. 如果类中不定义__init__,调用父类 super class的__init__2. 如果类继承父类也需要定义自己的__init__,就需要在当前类的__init__调用一下父类__init__3. 如何调用父类__init__:super().__init__(参数)super(类名,对象).__init__(参数)4. 如果父类有eat(),子类也定义一个eat方法,默认搜索的原则:先找当前类,再去找父类s.eat()override: 重写(覆盖)父类提供的方法不能满足子类的需求,就需要在子类中定义一个同名的方法,这种行为:重写5.子类的方法中也可以调用父类方法:super().方法名(参数)'''class Person:def __init__(self, name, age):self.name = nameself.age = agedef eat(self):print(self.name + "正在吃饭...")def run(self):print(self.name + '正在跑步...')class Student(Person):def __init__(self, name, age, clazz):super().__init__(name, age)self.clazz = clazzdef study(self, course):print('{}正在学习{}课程'.format(self.name, course))def eat(self, food):super().eat()  #调用父类的代码print(self.name + "正在吃饭...,喜欢吃:" + food)class Employee(Person):def __init__(self, name, age, salary, manager):super().__init__(name, age)self.salary = salaryself.manager = managerclass Doctor(Person):def __init__(self, name, age, patients):super(Doctor, self).__init__(name, age)self.patients = patientss = Student('阿文', 18, 'python1905')
s.run()
s.study('python基础')
s.eat('满汉全席')e = Employee('tom', 23, 10000, 'king')
e.run()lists = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
d = Doctor('lucy', 30, lists)
d.run()

五 工资案例


Python面向对象之私有化属性相关推荐

  1. Python面向对象程序设计中属性的作用与用法

    公开的数据成员可以在外部随意访问和修改,很难保证用户进行修改时提供新数据的合法性,数据很容易被破坏,并且也不符合类的封装性要求.解决这一问题的常用方法是定义私有数据成员,然后设计公开的成员方法来提供对 ...

  2. python定义一个类和子类_Python面向对象class类属性及子类用法分析

    本文实例讲述了Python面向对象class类属性及子类用法.分享给大家供大家参考,具体如下: class类属性 class Foo(object): x=1.5 foo=Foo() print fo ...

  3. python的实例属性和静态属性_Python面向对象之静态属性、类方法与静态方法分析...

    本文实例讲述了Python面向对象之静态属性.类方法与静态方法.分享给大家供大家参考,具体如下: 1. 静态属性:在函数前加@property,将函数逻辑"封装"成数据属性,外部直 ...

  4. python 类静态属性_python面向对象之静态属性/静态方法/类方法/组合

    继续学习,不要松懈 #!/usr/bin/env python # coding:utf-8 class Campus: def __init__(self,name,addr,type): self ...

  5. python控制视频_控制Python面向对象的访问

    回顾 在Python进阶记录之基础篇(十五)中,我们介绍了面向对象的基本概念以及Python中类和对象的基础知识,需要重点掌握类的创建和对象的使用.今天我们继续讲一下Python中面向对象的相关知识点 ...

  6. python面向对象中的私有属性和私有化方法

    xx: 公有变量 (公有) _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __xx:双前置下划线,避免与子类中的属性命名冲突, ...

  7. Python面向对象中的“私有化”

    Python面向对象中的"私有化" Python并不直接支持私有方式,而要靠程序员自己把握在外部进行特性修改的时机. 为了让方法或者特性变为私有(从外部无法访问),只要在它的名字前 ...

  8. python面向对象类属性_python面向对象之类属性和类方法案例分析

    本文实例讲述了python面向对象之类属性和类方法.分享给大家供大家参考,具体如下: 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 使用面相对象开发, ...

  9. 三. python面向对象(私有属性和私有方法 私有静态方法 私有类方法)

    一. 私有属性(封装) # 侠义 上的封装 面向对象的三大特性之一 # 属性 和 方法都隐藏起来 不让你看到 # 如果要让内部属性不被外部属性直接访问 在属性前加上两个下划线__ # 在python中 ...

最新文章

  1. R Learnilng 十八讲13-17
  2. Java类库及其组织结构(Java API)
  3. python 命名管道_Python:检查命名管道是否有数据
  4. c++17(21)-volatile和const、const_cast
  5. 中小企业CRM评测-八百客
  6. 巧妙使用信用卡N个小技巧
  7. 二进制文件和普通文件(文本文件)区别
  8. poj 2229 Sumsets(类似于n的m划分)
  9. jedis java.lang.verifyerror_需要使用jfinal中的JedisPlugin的一些问题
  10. MySQL数据库基本操作语法
  11. jq使用教程08_基于估值波动周期的择时策略
  12. poj3179 Corral the Cows(二分, 前缀和, 离散化, 双指针)
  13. html中怎么让字体闪烁,HTML最简单的文字闪烁代码
  14. Java String子序列
  15. Office系列完全干净卸载工具合集(最全)
  16. m3000服务器维修,陕汽德龙新M3000,仪表上有个故障灯,红颜色⭕里有个❌是个什么故障灯了...
  17. PDF编辑技巧 PDF怎么修改文字
  18. 天涯明月刀@小虫@有你真好@下载
  19. python集合的基本运算
  20. 艾伟也谈项目管理,五年Skype架构师之路的感言

热门文章

  1. Python编写程序,实现输出100以内质数的功能
  2. 一些实用的电脑软件推荐
  3. Mockjs基础用法
  4. idea怎么创建Maven项目以及如何使用
  5. 代码随想录Day11
  6. 大模型训练数据多样性的重要性
  7. HTML5的popstate、pushState、replaceState记录(Vue-Router实现)
  8. 等保测评的堡垒机是什么?有什么功能?
  9. 常用数字信号编码之反向不归零码码、曼彻斯特编码、差分曼彻斯特编码
  10. js 判断mac地址是否为组播地址