dir
python
内置方法有很多,无论是初学者还是精通python
的程序员都不能全部记住所有的方法,这时候 dir()
方法就非常有用了,使用 dir()
函数可以查看对象内的所有的属性和方法,在 python
中任何东西都是对象,一种数据类型,一个模块等,都有子集的属性和方法,除了常用的方法外,其他的你不需要全部记住它,交给dir()
函数就好了。
比如查看列表、字符串、字典的方法:
print(dir([]))
print(dir(""))
print(dir({}))
也可以查看模块里面的方法:
import random
print(dir(random))
内置方法
__方法名__
格式是python
针对对象提供的内置方法/属性。
__doc__
:获取一个函数的文档说明,比如:
import random
print(random.randint.__doc__)
>>>Return random integer in range [a, b], including both end points.
__new__
:使用类名()
创建对象时,会被自动调用。是由object
基类提供的内置静态方法。
使用类名()
创建对象时,python
的解释器首先会调用__new__
方法为对象分配空间。然后__init__
初始化对象。
__init__
:对象被初始化时,会被自动调用。__del__
:对象从内存中销毁前,会被自动调用。如果希望在对象被销毁前,再做一些事情,可以考虑一下__del__
方法。
class Ex:
def __del__(self):
print("Exit")
a = Ex()
# del a
print("-"*50)
>>> --------------------------------------------------
Exit
这里因为a
是全局变量,只有当程序退出时才会被销毁,此时才会调用__del__()
。如果在分割线上方使用del
删除对象的话,就会在分割线上方输出字符Exit
。
__str__
:返回对象的描述信息,print
函数输出使用。
class Ex:
def __del__(self):
print("Exit")
def __str__(self):
return "Class Name"
a = Ex()
print(a)
>>> Class Name
Exit
可以看到上述结果的print(a)
输出调用了__str__
。
私有属性和私有方法
self
定义属性,def
定义方法。
在实际开发中,对象的某些属性或方法可能只希望在对象的内部被使用,而不希望在外部被访问到。私有属性就是对象不希望公开的属性。私有方法就是对象不希望公开的方法。
在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法。
如果父类中有公有方法调用了父类中的私有属性和私有方法的话,子类可以通过访问父类中的共有方法间接访问到私有属性和私有方法。
伪私有属性和私有方法
Python
没有真正意义的私有,在给属性、方法命名时,实际是对名称做了一些特殊处理,使得外加无法访问,处理方法是在名称前面加上_类名
=>_类名__名称
。不过这种方式在新版Python
中已经不行了。