python中的类和对象、封装特性、继承、私有属性与私有方法

1.类和对象与封装特性

1.类(Class)是现实或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。

对象(Object)是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念。

类(Class)是是创建实例的模板  对象(Object)是一个一个具体的实例


2.封装:顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。所以,在使用面向对象的封装特性时,需要:
1). 将内容封装到某处
2). 从某处调用被封装的内容
        1). 通过对象直接调用被封装的内容: 对象.属性名
        2). 通过self间接调用被封装的内容: self.属性名
        3). 通过self间接调用被封装的内容: self.方法名()
1.如何定义类
class People:
    def __init__(self,name,age):
        # 3-1).把对象和对象的属性封装起来
        self.name = name
        self.age = age
        #self是实例化的对象本身,在python解释器中会自动将对象作为一个参数传递给self
        print("self:",self)
        print("正在执行构造方法init,在实例化对象时自动执行")
    # 在类里面的函数不叫函数,叫方法    
    def get_name(self):
        print("正在获取封装的数据,姓名:", self.name)

2.如何通过类实例化创造对象
p = People("小强",22)
# 3-2).如何获取封装的属性信息?
print("p:",p)
print("名称:",p.name)
print("年龄:",p.age)
p.get_name()

p1 = People("lbj",35)
print("name:",p1.name)
print("age:",p1.age)

 

2.继承(父类与子类)

父类(基类)-> 子类(扩展类)

继承描述的是事物之间的所属关系,当我们定义一个class的时候,可以从某个现有的class继承,
新的class称为子类、扩展类(Subclass),而被继承的class称为基类、父类或超类(Baseclass、
Superclass)。

#Student作为父类
class Student(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def exam(self):
        print("%s is examing......" %(self.name))

#MathStudent作为子类,继承于Student
class MathStudent(Student):
    def exam(self):
        #当子类与父类都存在同一方法时,默认以子类中的方法为准
        #如何在子类中快速调用父类的方法?
        #方法1:
        #Student.exam(self)
        #方法2:先找到当前类的父类,再调用父类的方法。(重要)
        super(MathStudent,self).exam()    
        print("math %s is examing..." %(self.name))

#实例化对象时,先判断类是否有构造方法,若没有,判断父类是否有
m1 = MathStudent("小张",20)
print(m1)
print(m1.name,m1.age)
m1.exam()

 

3.私有属性与私有方法

默认情况下,属性在 Python 中都是“public”, 大多数 OO 语言提供“访问控 制符”来限定成员函数的
访问。 
在 Python 中,实例的变量名如果以 __ 开头,就变成了一个私有变量/属性 (private),实例的函数名如
果以 __ 开头,就变成了一个私有函数/方法(private)只有内部可以访问,外部不能访问。
class Student(object):
    def __init__(self,name,age):
        self.name = name
        #私有属性
        self._age = age

    def get_age(self):
        #类的内部是可以访问私有属性的
        print("年龄:%s" %(self._age))

    def get_info(self):
        print(self.name, self.age)

s = Student("Coco",18)
#1.类的外部不能访问私有属性,因为python解释器自动将私有属性和私有方法改名了,_类名__属性名
print(s.__name)
#2.类的内部可以访问私有属性
s.get_age()
#3.类的外部不能执行私有方法,包括子类或者外面类均不可访问
s.__get__info()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值