Python训练营笔记 从函数到高级魔法方法 Day8

简介: 学习笔记 - 天池龙珠计划 - Python 训练营 Task3 Day8(类与对象)

天池龙珠计划 Python训练营

所记录的知识点

  1. self
  2. 公有、私有(Python的伪私有)
  3. 单继承,子类调用父类的初始化方法

1、self

python的self 相当于c++的this指针
In [1]: class Test:
   ...:     def print_self(self):
   ...:         print(self)
   ...:         print(type(self))
   ...:         print(dir(self))
   ...:

In [2]: Test().print_self()
<__main__.Test object at 0x000001DAA4149BB0>
<class '__main__.Test'>
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'print_self']

2、公有、私有(Python的伪私有)

公有、私有属性
公有、私有方法
python的私有是伪私有,可以通过 实例._类名__变量名 或者 实例._类名__方法名()来调用
In [16]: class Test:
    ...:
    ...:     def __init__(self,age):
    ...:         self.__money = 100  # 私有变量
    ...:         self.age = age  # 公有变量
    ...:
    ...:     def say_hello(self):
    ...:         # 公有方法
    ...:         print("say_hello")
    ...:         print("hello")
    ...:
    ...:     def __cal_money(self):
    ...:         # 私有方法
    ...:         print("__cal_money")
    ...:         print(self.__money)
    ...:

In [17]: Test(12)._Test__money  # 类外部访问私有属性
Out[17]: 100

In [18]: Test(12)._Test__cal_money()  # 类外部访问私有方法
__cal_money
100

In [19]: Test(20).age
Out[19]: 20

In [20]: Test(20).say_hello()
say_hello
hello

3、单继承,子类调用父类的初始化方法

子类调用父类的初始化方法:super().\_\_init\_\_()
看 \_\_init\_\_ 方法中,"start" 和 "end" 的特殊设计
注意初始化时的顺序
In [28]: class Book:
    ...:     def __init__(self):
    ...:         print("Book __init__ start")
    ...:         print("Book __init__ end")
    ...:

In [29]: class MathBook(Book):
    ...:     def __init__(self):
    ...:         print("MathBook __init__ start")
    ...:         super().__init__()
    ...:         print("MathBook __init__ end")
    ...:
    ...:

In [30]: MathBook()
MathBook __init__ start
Book __init__ start
Book __init__ end
MathBook __init__ end
Out[30]: <__main__.MathBook at 0x1daa3eb0370>


欢迎各位同学一起来交流学习心得!

目录
相关文章
|
1天前
|
机器学习/深度学习 数据采集 算法
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
有多种方法可以处理时间序列数据中的噪声。本文将介绍一种在我们的研究项目中表现良好的方法,特别适用于时间序列概况中数据点较少的情况。
10 1
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
|
2天前
|
消息中间件 关系型数据库 数据库
Python实时监测数据库表数据变化的方法
在实现时,需要考虑到应用的实时性需求、数据库性能影响以及网络延迟等因素,选择最适合的方法。每种方法都有其适用场景和限制,理解这些方法的原理和应用,将帮助开发者在实际项目中做出最合适的技术选择。
26 17
|
2天前
|
XML 数据格式 Python
Python技巧:将HTML实体代码转换为文本的方法
在选择方法时,考虑到实际的应用场景和需求是很重要的。通常,使用标准库的 `html`模块就足以满足大多数基本需求。对于复杂的HTML文档处理,则可能需要 `BeautifulSoup`。而在特殊场合,或者为了最大限度的控制和定制化,可以考虑正则表达式。
19 12
|
8天前
|
Python
Python中几种lambda排序方法
【9月更文挑战第7天】在Python中,`lambda`表达式常用于配合排序函数,实现灵活的数据排序。对于基本列表,可以直接使用`sorted()`进行升序或降序排序;处理复杂对象如字典列表时,通过`lambda`指定键值进行排序;同样地,`lambda`也适用于根据元组的不同位置元素来进行排序。
|
13天前
|
Python
python 函数
【9月更文挑战第4天】python 函数
34 5
|
19天前
|
Python
Python 中 help() 和 dir() 函数的用法
【8月更文挑战第29天】
18 5
|
19天前
|
Python
|
13天前
|
数据采集 自然语言处理 数据挖掘
python查询汉字函数
简洁、高效、易懂的代码对于提高开发效率与项目质量至关重要,并且对于维持代码的可读性和可维护性也有着很大帮助。选择正确的工具和方法可以大幅提升处理中文数据的效率。在编写用户定义函数时,明确函数的功能与返回值类型对于函数的复用和调试也同样重要。当涉及到复杂的文本处理或数据分析时,不宜过分依赖单一的工具或方法,而应根据具体需求灵活选择和组合不同的技术手段。
21 0
WK
|
14天前
|
图计算 开发者 Python
python中的函数有哪些用途
Python中的函数具有多种用途,它们极大地增强了代码的复用性、可读性和可维护性。
WK
9 0
|
17天前
|
UED Python
探索Python中的魔法方法:打造自定义字符串表示
【8月更文挑战第31天】在Python的世界里,魔法方法是那些以双下划线开头和结尾的特殊方法,它们为类提供了丰富的功能。本文将带你走进这些魔法方法的背后,特别是__str__和__repr__,揭示如何通过它们来定制我们的对象在被打印或转换为字符串时的外观。我们将从基础用法开始,逐步深入到高级技巧,包括继承与重写,最终实现一个优雅的字符串表示方案。准备好了吗?让我们开始这段代码之旅吧!