Python中一些奇怪又有用的函数

本文深入讲解了Python中getattr()函数的使用方法,包括如何通过该函数读取未实例化的类中的变量值,以及如何获取类的方法并调用。示例代码清晰地展示了getattr()函数的强大功能。
  1. getattr()函数:
    这个函数可以直接读取一个未实例化的类中的内容:
    ①获取一个变量的值:

     class A(object):
     	first = "this is first"
     	
     print(getattr(A ,"first"))
    

结果会输出 this is first;

② 获取一个类:

class A(object):
    class B(object):
        second = "B"
        def func():
            print("this is B")
a = getattr(A,"B")
a.func()

结果会输出 this is B.

### Python 中 `self` 的用法及作用 #### 什么是 `self` 在 Python 面向对象编程中,`self` 是指向类实例本身的引用。它允许方法访问和操作当前实例的属性以及其他方法[^1]。 #### `self` 的主要功能 1. **访问实例属性** 使用 `self` 可以方便地访问属于该实例的属性。例如,在初始化函数 `__init__()` 中设置的任何变量都可以通过 `self.<attribute>` 来访问。 2. **调用其他实例方法** 当一个方法需要调用同一个类中的其他方法时,可以通过 `self` 实现这一点。这有助于保持代码结构化并促进模块化设计[^3]。 3. **实现数据封装** 正确使用 `self` 能够帮助开发者构建具有良好封装特性的程序组件。这意味着内部状态被隐藏起来只供特定接口存取[^1]。 4. **支持方法链式调用** 如果希望连续执行多个动作而无需重复指定目标对象,则可以在每一步返回 `self` ,从而启用所谓的“方法链接”技术[^2]。 5. **区别于局部变量** 在某些情况下可能会遇到同名但意义不同的名字冲突情况;利用前缀加上的 `self.` 明确表明这是针对某个具体实体的操作而非临时创建出来的简单存储单元[^3]。 #### 示例代码展示如何运用 `self` ```python class Calculator: def __init__(self, value=0): self.value = value def add(self, number): self.value += number return self # 返回自身以便进行链式调用 def subtract(self, number): self.value -= number return self calc = Calculator(10).add(5).subtract(3) print(calc.value) # 输出应为12 ``` 在这个例子当中可以看到,每次完成相应的运算之后都会把整个计算器对象本身再传回去给下一个命令继续处理直到最后得到最终的结果为止。 #### 常见误区与注意事项 - 不要遗漏在定义成员函数的时候加上参数列表里的首个位置放置代表本体的那个特殊标记——即通常所说的叫做 “self”的那个东西; - 切记即使语法上看起来好像可以直接写成像 C++那样直接引用别的非静态成员也不行哦因为那样子的话编译器根本不知道你说的是谁呀所以还是乖乖按照规矩来吧!另外一点就是虽然理论上讲我们可以随便起个别的什么奇怪的名字代替这个惯例但是强烈反对这么做毕竟大家都习惯了嘛何必制造不必要的麻烦呢?还有就是在实际运行期间系统会自动帮我们将对应的实际地址填进去因此当我们自己编写客户端侧逻辑去触发这些行为时完全不必担心额外提供多余的信息啦! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值