IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> CodingLifeDay7:Python:面向对象基础知识Section4 -> 正文阅读

[Python知识库]CodingLifeDay7:Python:面向对象基础知识Section4

1,运算符重载

# 这是一个用于描述向量的类,然而它的输出似乎并不符合我们的期望。
class vector:
    def __init__(self,x,y):
        self.x = x
        self.y = y

p1 = vector(3,4)
p2 = vector(6,7)
print(p1)                   # 我们希望能打印出一个坐标。事实上:<__main__.vector object at 0x0000020F7D17DFD0>
print(p1+p2)                # 我们希望能打印出和向量的坐标。事实上:TypeError: unsupported operand type(s) for +: 'vector' and 'vector'

# 第一个问题的解决需要重写__str__()方法,这个方法是类自带的,用于控制输出的格式。修改如下:
def __str__(self):
    return f"({self.x},{self.y})"
# 这样就能打印出实例所对应的坐标而非内存地址。

# 第二个问题的解决涉及到运算符重载,也就是对运算符的含义进行重写。类中加号的方法是__add__,因此重写如下:
def __add__(self, other):
    x = self.x + other.x
    y = self.y + other.y
    return vector(x, y)   # 将结果转化为类的实例再返回可以保证输出格式的一致

# 将上面两个重写的函数放到类vector中再次运行即可解决问题

运算符及对应方法名总结

一元运算符

二元运算符

比较运算符


2,反射

反射:通过字符串形式导入模块、寻找函数、增删成员。

module = input('Input module name:')
Module = __import__(module, fromlist=True)      # 导入模块,模块名字是module,Module相当于模块的别名
Module.f()                                      # 调用导入模块的f函数
function_name = input('Input function name:')
function = getattr(Module, function_name)       # 调用模块中的function_name函数
function()

①getattr()函数

getattr(object,name,str)

1:寻找属性,存在返回属性值,不存在报错或返回设定的值;

2:寻找函数,存在返回函数地址,不存在报错或返回设定的值。

class test:
    name = 'test_class'
    def test_function(self):
        print("hello,world")

test_object = test()

print(getattr(test_object,'name','Not found.'))                      # test_class
print(getattr(test_object,'age','Not found.'))                       # Not found.
print(getattr(test,'test_function','I found this function.'))        # <function test.test_function at 0x000001EC27BF7430>
print(getattr(test,'it','No this function.'))                        # No this function.

②hasattr()函数

hasattr(object,name)

寻找属性或函数,存在返回True,不存在返回False

print(hasattr(test,'name'))           # True
print(hasattr(test,'age'))            # False
print(hasattr(test,'test_function'))  # True
print(hasattr(test,'it'))             # False

③setattr()函数

setattr(object,name,value) == object.name = value

④delattr()函数

delattr(object,name) ==?del object.name

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:18:30  更:2021-08-05 17:20:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 12:33:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码