初始化

  • **_init_**:这玩意看似写着初始化,但是实际上本方法是在类实例化之后调用,用于初始化内部数据
  • **_new_**:这才是实例化时会调用的方法,也就是类最开始调用的方法~

eval

Python中的eval()是一个非常有用的内置函数,它可以用来执行一个字符串表达式,并返回表达式的值。

eval()函数将字符串当成有效的表达式来求值并返回计算结果。也就是说,我们可以将一个字符串传递给eval(),然后该字符串会被当作Python表达式执行。

例如:

1
2
3
4
5
6
7
8
9
>>> eval("1 + 2")
3

>>> x = 2
>>> eval("x + 3")
5

>>> eval("[1, 2, 3] + [4, 5]")
[1, 2, 3, 4, 5]

在上面的例子中,传递给eval()的字符串被解释执行了。

eval()可以执行使用Python语法的任何表达式,包括数字、字符串、列表、字典等。但需要注意的是,使用eval()执行的语句应该是安全可信的,不能直接处理用户输入,因为那会存在安全隐患。

另外,python还有一个非常类似的函数exec(),它也可以执行字符串形式的python代码,但是不返回值,仅执行代码逻辑。

getattr

在Python中,getattr()是一个非常有用的内置函数,它可以用来获取一个对象的属性。

getattr()函数的语法如下:

1
getattr(object, name[, default])

其中:

  • object:对象
  • name:字符串,对象属性的名称
  • default:可选,如果指定的属性不存在时的默认值

getattr()会去对象object中查找名称为name的属性,如果存在就返回该属性的值。如果不存在,则返回默认值default,如果没有指定默认值,则触发AttributeError异常。

例如:

1
2
3
4
5
6
7
8
9
class Person:
name = 'Bob'
age = 18

p = Person()

print(getattr(p, 'name')) # 输出'Bob'
print(getattr(p, 'gender')) # 抛出AttributeError异常
print(getattr(p, 'gender', 'Male')) # 输出'Male',没有gender属性所以返回默认值

这在访问对象的属性时非常方便,特别是当属性名是动态传入的情况。

getattr()通常用于访问对象的属性,与之对应的函数setattr()用于设置对象的属性。