ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python面向对象基础(二)

2021-09-23 16:03:06  阅读:123  来源: 互联网

标签:f1 name Python self 基础 面向对象 父类 class def


文章目录(PS:觉得不错请点赞收藏支持一下)

一、继承

1.1 概念

1. 官方语言
继承:子类继承父类的属性和方法
2. 生活举例
生活中的继承,有很多种,比如:子女继承父辈的财产,徒弟继承师父的传统手艺…
3. 语法格式

# 父类 A
class A():
    pass
    
# 子类 B
class B(A):
    pass

在 Python 中,所有类默认继承 object 类, 它是顶级类或基类,其他子类叫做派生类。

1.2 单继承

class A():
    def __init__(self):
        self.name = 'hello'
    def f1(self):
        print('父类的 f1 方法')
class B(A):
    pass

# 创建对象
b1 = B()
# 访问实例属性
print(b1.name)  # hello
# 调用实例方法
b1.f1()  # 父类的 f1 方法

1.3 多层继承

字面意思,一层一层的继承,实践一下就懂了

class A():
    def f1(self):
        print('f1')
class B(A):
    def f2(self):
        print('f2')

class C(B):
    pass

# 创建对象
c1 = C()
c1.f1()  # f1
c1.f2() # f2

1.4 多继承

解释说明:意思是一个类同时继承了多个父类。

"""
多继承: 是 python 独有的一种机制
因为 python 中没有接口概念,所以使用多继承实现接口
如果多个父类中存在同名方法,子类按顺序优先调用第一个父类的方法
"""
class A():
    def f2(self):
        print('A 的 f2 方法')
class B():
    def f2(self):
        print('B 的 f2 方法')
class C(A,B):
    def f1(self):
        print('C 的 f1 方法')

# 创建对象
c1 = C()
c1.f1()  # C 的 f1 方法
c1.f2() # A 的 f2 方法

二、子类与父类的方法

2.1 子类调用父类指定方法

  1. 通过 父类名称.方法名称(self) 调用
class A():
    def f1(self):
        print('父类的 f1 方法')
class B(A):
    def f2(self):
        # 调用父类中的 f1 方法
        A.f1(self)
# 创建对象
b1 = B()
b1.f2()  # 父类的 f1 方法
  1. 通过 supper().方法名称() 调用
class A():
    def f1(self):
        print('父类的 f1 方法')
class B(A):
    def f2(self):
        # 调用父类中的 f1 方法
        super().f1()

# 创建对象
b1 = B()
b1.f2()  # 父类的 f1 方法

3. 如果子类定义了与父类同名的属性和方法,子类默认获取自己的属性和方法。

class A():
    def __init__(self):
        self.name = '父类A'
    def f1(self):
        print('父类的 f1 方法')
class B(A):
    def __init__(self):
        self.name = '子类B'
    def f1(self):
        print('子类的 f1 方法')

# 创建对象
b1 = B()
# 访问实例属性
print(b1.name)  # 子类B
# 调用实例方法
b1.f1()  # 子类的 f1 方法

4. 如果子类定义了与父类同名的属性和方法,子类还是想获取父类的属性和方法,该怎么办呢?

请细品
class A():
    def __init__(self):
        self.name = '父类A'
    def f1(self):
        print(self.name)
class B(A):
    def __init__(self):
        self.name = '子类B'
    def f1(self):
        print(self.name)
    def f2(self):
        A.__init__(self)
        A.f1(self)

b1 = B()
b1.f2()   # 父类A
print(b1.name)  # 父类A

三、私有成员

如果这个属性和方法不需要外部访问,那就设置成私有的。

3.1 定义

设置私有权限的方法:在属性名和方法名 前面 加上两个下划线 __
1. 语法格式

class 类名():
    # 私有属性
    __属性名 = 值
    # 私有方法
    def __函数名(self):
        代码

2. 举例

# 私有属性和私有方法只能在类里面访问和修改。
class A():
    def __init__(self):
        self.__name = '张三' # 将 name 属性设置为私有,在类的外部无法访问
    def __f1(self):
        print('f1')
a1 = A()
print(a1.name)  # 报错
a1.__f1()  # 报错

3.2 获取和修改私有属性

在Python中,一般定义函数名 get_xx 用来获取私有属性,定义 set_xx 用来修改私有属性值。

class A():
    def __init__(self):
        self.__name = '张三' # 将 name 属性设置为私有,在类的外部无法访问
    def f2(self):
        print(self.__name)
    def get_name(self):
        return self.__name
    def set_name(self,value):
        self.__name = value

a1 = A()
# 通过公有方法和属性来操作类中的私有成员
# 获取
a1.f2()  # 张三
# 修改
a1.set_name('老王')
print(a1.get_name())  # 老王

总结

一起进步吧

标签:f1,name,Python,self,基础,面向对象,父类,class,def
来源: https://blog.csdn.net/m0_58040147/article/details/120436631

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有