面向对象的三大特性:继承、多态、封装--封装

一、封装
1、广义的封装:实例化一个对象,给对象空间封装一些属性

class A:
	def __init(self,name):
		selef.name = name#对象封装属性

2、狭义的封装:私有制。 私有成员:私有静态字段、私有动态方法、私有对象

私有静态字段(见下方代码):
1、实例化对象不能访问私有静态字段
2、类名不能访问私有静态字段
结论:对于私有静态字段,只能在本类中内部访问,派生类不可访问

#类外访问私有静态字段
class A:
	name ="张三"#对象属性,非私有
	__age = 10#私有静态字段
	def func(self):
		print("任意输出")
a = A()
print(a.name)#类外访问:对象访问非静态字段,可正常输出“张三”
print(A.name)#类外访问:类访问非静态字段,可正常输出“张三”
print(a.__age)#类外访问:对象访问私有静态字段,报错  type object 'A' has no attribute '__age'
print(A.__age)#类外访问:类访问私有静态字段,报错   type object 'A' has no attribute '__age'
#类内访问私有静态字段
class A:
	name ="张三"#对象属性,非私有
	__age = 10#私有静态字段
	def func(self):
		print(self.__age)#本类内访问私有静态变量
		print(A.__age)	#本类内访问私有静态变量
		print("任意输出")
a = A()
a.func()

#结果
#19
# 19
# 随便输出
#派生类不可访问私有静态字段
class A:
	name ="张三"#对象属性,非私有
	__age = 10#私有静态字段
	def func(self):
		print(self.__age)#本类内访问私有静态变量
		print(A.__age)	#本类内访问私有静态变量
		print("任意输出")

class B(A):
	def func1(self):
		print(self.__age)
		print(B.__age)

b = B()
b.func1()
#结果
#'B' object has no attribute '_B__age'

私有方法(见下方代码):
1、类外不能访问私有方法
2、类的内部可以访问
结论:对于私有方法,只能在本类中内部访问,派生类不可访问

class A:
    name ="张三"
    __age = 19
    def __func(self):#基类中定义一个私有方法
        print("私有方法")
    def f1(self):
        self.__func()#类内访问私有方法

class B(A):
    def func1(self):
        self.__func()

b = B()
a = A()
a.__func()#类外不可访问私有方法   'A' object has no attribute '__func'
a.f1()#输出“私有方法”--本类内可以访问私有方法
b.func1()#派生类不可访问基类的私有方法   'B' object has no attribute '_B__func'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值