面向对象-封装

Posted jbzd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象-封装相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

一:创建类和对象
  class f:
    def bar(self):
      print(‘bar‘)
    def hello(self, name)
      print(‘hello %s‘%name)
  fobj = f()
  fobj.bar() > ‘bar‘
  fobj.hello(‘tom‘) >‘hello tom‘

ps:类中的第一个参数必须是self,类中定义的函数叫方法
二:面向对象三大特性--封装
#三大特性:封装、继承、多态
1.封装:
  #将内容封装到某处
  #从某处调用被封装的内容

例1:将内容封装到某处

技术分享图片

解析:self是一个形式参数,当执行 fobj = F(‘tom‘,18)时,self等于fobj

例2:从某处调用封装的内容
调用封装的内容时,有两种情况:
  #通过对象直接调用
  #通过间接self调用

fobj = F(‘tom‘,18)
fobj.name >>> tom 调用fobj对象的name属性
fobj.age >>> 18  调用fobj对象的age属性

class F:
  def __init__(self,name,age)
    self.name = name
    self.age = age
  def hello(self):
    print(self.name)
    print(self.age)
fobj = F(‘tom‘,18)
fobj.hello()
>>> tom
>>> 18

 设置私有

#类中所有双下划线开头的名称如__x都会在类定义时,自动变形成:_类名__x的形式
class A:
  __B = 123 # _A__B
  def __init__(self):
    self.__T = 10 # 变成: self._A__T
  def __foo(self):  # 变成: _A__foo,这是一个私有方法
    print(self.__T)
  def test(self):
    self.__foo()  #只有在类内部,才能访问私有变量和方法,即 调用 _A__foo
a = A()
#a._A__N 可以在外部直接被访问到的
# self.__T、__foo(self) 这样的私有变量和方法是直接在外部访问的,但是可以通过__dict__来查看私有的变量

封装的意义:
  1.封装数据:隐藏起来对外提供操作该数据的接口,这样可以确保操作属性的安全性
  2.封装方法:目的是隔离复杂度,将复杂的实现过程进行隐藏,对外提供接口。ATM机就是一个很好的例子
  

 


例子如下:
1.打印汽车有4个轮子
2.打印汽车是红色的
3.打印汽车牌子是奔驰

1.打印汽车有8个轮子
2.打印汽车是白色的
3.打印汽车牌子是宝马
#函数式编程:
def carr(num):
  print(‘汽车有%s个轮子‘%num)
def color(col):
  print(‘汽车是%s色‘ %col)
def brand(bran):
  print(‘汽车牌子是%‘%bran)
调用:
carr(4)
color(‘红色‘)
brand(‘奔驰‘)

carr(8)
color(‘白色‘)
brand(‘宝马‘)

#面向对象编程
class F:
  def __init__(self, carr, color, bran):
    self.carr = carr
    self.color = color
    self.bran = bran
  def carr(self):
    print(‘汽车有%s个轮子‘%self.carr)
  def color(col):1
    print(‘汽车是%s色‘ %self.color)
  def brand(bran):
    print(‘汽车牌子是%‘%self.bran)
fobj1 = F(4,‘红色‘,‘奔驰‘)
fobj1.carr()
fobj1.color()
fobj1.brand()

fobj2 = F(8,‘白色‘,‘宝马‘)
fobj1.carr()
fobj1.color()
fobj1.brand()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

---恢复内容结束---

































































































以上是关于面向对象-封装的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

Java 封装

Java 封装

Java 封装

Java 封装