多测师肖sir_高级金牌讲师__python之类与对象介绍和封装

(一)类和对象的基本介绍
1、类:用来描述具有相同的属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法。
比如:人类----------(有共同特征,两个脚,两个手,一张嘴)
动物类--------(共同的特征,)

2、对象:
python 中一切皆对象。对象是类的实例。
比如:人类----------yahui(对象)而且(yahui也是一个具体实例)
3、实例化:
创建一个类的实例,类的具体对象
4、方法:类中定义的函数。
5、类变量
6、实例变量 self
7、继承
8、封装
9、多态

============================================
(二)、定义 类
#三种写法:类定义
#第一种:class A(object): pass 新式类写法
#第二种: class B() : pass 经典类写法
#第三种: class C: pass 经典类写法

python3 已经取消经典类,默认都是新式类,并且不必显示继续object,

#定义一个新式类
#class People (object):
def a(self):
pass
#定义一个经典类:
class PeopleOld():
def b(self):
pass

=============================
案例:定义类和调用类
场景一:
class A():
def m(self):
print(“123”)
def n(self):
print(“456”)
def y(self):
print(“789”)
if name == ‘main’:
q=A() #类通过创建对象,来调用函数
q.m()
q.n()
q.y()

场景二:
class HzDcs(object): # 定义一个hzdcs类
def init(self,x,y): #构造函数用来实现初始化
self.x=x #实例变量
self.y=y #实例变量
def test(self): #定义一个函数
print(self.x) #
print(self.y)
if name == ‘main’: #调用方法main
dcs=HzDcs(2,3) #创建对象dcs对象,HZdcs是类名,注意一定要加上()
#2,3是实例
dcs.test()

名词解释:
1、定义类的时候__init__是一个构造函数,该函数是两个下划线开头和两个下 划线结束,其作用就是当创建类的对象和实例时系统会自动调用构造函数,通 过构造函数对类进行初始化操作
2、定义类的时候__init__方法中有一个参数self,这也是类中的方法与普通函 数的区别,类的中的方法必须有一个参数self,而且位于参数列表的开头,在 类中self就是代表类的当前类的实例(对象)自身,在python调用时无需传值, python会将对象自动传给self接受

===========================================

类的变量和实例变量

1、类的变量:
在类名的下发,在方法的上方,就是类变量
2、实例变量:
通常在构造函数下方。变量名=变量名.

class A(): #定义一个类
a=10 #类变量
def init(self,m,b): #构造函数
self.m=m #实例变量 self
self.b=b
def d(self): #函数d
print(self.m+self.b)
def c(self): #函数c
print(self.m-self.b)
def s(self): #函数s
print(self.m *self.b)
if name == ‘main’:
#w=A(1,2) #创建对象,调用
# w.d()
# A(4,5).d() #类名调函数
# print(A.a) #调用类变量
A.a=20 #修改类变量
print(A.a) #调用类变量
==================================
实例方法,动态方法、静态方法
场景一:
class HzDcs(object): # 定义一个hzdcs类
def init(self,x,y): #构造函数用来实现初始化
self.x=x #实例变量
self.y=y #实例变量
def test(self): #定义一个函数
print(self.x+self.y) #
if name == ‘main’: #调用方法main
dcs=HzDcs(2,3) #创建对象dcs对象,HZdcs是类名,注意一定要加上()
#2,3是实例
dcs.test()
场景二:(实例方法,动态方法,静态方法)
class HzDcs(object): # 定义一个hzdcs类
x=100 #类变量
y=200 #类变量
def init(self,x,y): #构造函数用来实现初始化
self.x=x #实例变量
self.y=y #实例变量
def test(self): #定义一个函数
print(self.x+self.y) #
@classmethod #动态方法
def d(cls): #cls 类是class的简写,在类变量
#cls.x
#cls.y
print(cls.x+cls.y)
@staticmethod #静态方法 也叫私有方法
def c(m,n,k): #自己定义一个函数c,m,n 定义两个变量前加上
print(m+n)
if name == ‘main’: #调用方法main
dcs=HzDcs(2,3) #创建对象dcs对象,HZdcs是类名,注意一定要加上()
#2,3是实例
# dcs.test()
# dcs.d()
dcs.c(3,4)

装饰器:是在静态方法中写入

==========================

类的三大特性:
封装
继承
态度
(一)封装:
定义在设计类时,不对外提供,隐藏起来,提供公共方法对外(把属性和方法封装到一个抽象的类中)
(1.1)封装的优点
1.1.1封装数据可以很好的保护隐私,(将不需要对外提供的内容隐藏起来)
1.1.2 封装方法主要原因是隔离复杂度
1.2.3 封装提高代码的复用性
1.1.4 隐藏对象和属性的实现细节,提供公共方法对其访问。

(1.2)python中的封装分为两种:
公用:类中的变量和方法公用,他们的名称前都没有下划线,公有变量,在类的内部,外部,以及子类都可以访问
私用:在类中的变量或方法,,开头命名,以__双下划线,则改变量和方法为私用,私有变量和方法,只能在本类的内部使用,类的外部以及子类无法使用

私有属性:
格式:__属性名=值 (在类的外部不能使用,对象不能调用属性)
私用封装后的限制:
(1)类可以访问
(2)类/对象, 不可访问
(3)子类和子对象 不可访问

=============================

案例一:
在这里插入图片描述
在这里插入图片描述
class People():
def init(self,name,age):
self.__name=name
self.__age=age
def getName(self):
return(self.__name)
def setName(self,name):
self.__name=name
def get_age(self):
return (self.__age)
def set_age(self,age):
self.__age= age
#set_age中添加限制条件进行数据限制

p=People(“wangwang”,18)
#p.setName()
print(p.get_age())
print(p.get_Name())

场景二:

(1) 数据的封装

class People():

def init(self,name,age):

self.name=name

self.age=age

#(2)方法的封装:

class People():

def init(self, name, age):

self.name = name

self.age = age

def get_name(self):

return self.name

(3)

class People():
def init(self, name, age):
self.__name = name
self.__age = age
def set_name(self,newname):
self.__name=newname
def set_age(self,age):
self.__age=age
def get_age(self):
print(self.__age)
def get_name(self):
print(self.__name)
if name == ‘main’:
d=People(“刘总”,18)
#d.get_name()
d.set_name(“徐总”)
d.set_age(“19”)
d.get_name()
d.get_age()

(4)
class A():
def a(self):
print(“hz001”)
def __b(self): #封装私有方法,外部无法调用,但是内部可以调用
print(“hz002”)
def c(self):
print(“hz003”)
self.__b()
if name == ‘main’:
s=A()
# s.a()
# s.__b() #无法
s.c()

a和c 是共有方法,__b是私用方法

==================================
封装:
(1)面向面向的三大特性之一
(2)封装值得是隐藏对象中的一些不希望被外部所访问的属性和方法
(3)将对象的属性名,修改为一个外部不知道的名字
(4)set属性名 用来设置对象指定的属性
(5)get属性名 用来获取对象指定的属性

封装的步骤;
(1)定义类型,所有属性私有化,双下划线开头
(2)每个属性提供get|set 方法, 赋值和取值
(3)在get和set 方法中,提供限制条件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多测师软件测试培训师肖sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值