1、类专有的方法
一个类创建的时候,就会包含一些方法,主要有以下方法:
类的专有方法:
| 方法 | 说明 | 
| __init__ | 构造函数,在生成对象时调用 | 
| __del__ | 析构函数,释放对象时使用 | 
| __repr__ | 打印,转换 | 
| __setitem__ | 按照索引赋值 | 
| __getitem__ | 按照索引获取值 | 
| __len__ | 获得长度 | 
| __cmp__ | 比较运算 | 
| __call__ | 函数调用 | 
| __add__ | 加运算 | 
| __sub__ | 减运算 | 
| __mul__ | 乘运算 | 
| __div__ | 除运算 | 
| __mod__ | 求余运算 | 
| __pow__ | 乘方 | 
当然有些时候我们需要获取类的相关信息,我们可以使用如下的方法:
type(obj):来获取对象的相应类型;
isinstance(obj, type):判断对象是否为指定的 type 类型的实例;
hasattr(obj, attr):判断对象是否具有指定属性/方法;
getattr(obj, attr[, default]) 获取属性/方法的值, 要是没有对应的属性则返回 default 值(前提是设置了 default),否则会抛出 AttributeError 异常;
setattr(obj, attr, value):设定该属性/方法的值,类似于 obj.attr=value;
dir(obj):可以获取相应对象的所有属性和方法名的列表:
2、方法的访问控制
其实我们也可以把方法看成是类的属性的,那么方法的访问控制也是跟属性是一样的,也是没有实质上的私有方法。一切都是靠程序员自觉遵守 Python 的编程规范。
示例如下,具体规则也是跟属性一样的,
#!/usr/bin/env python # -*- coding: UTF-8 -*- class User(object): def upgrade(self): pass def _buy_equipment(self): pass def __pk(self): pass
3、方法的装饰器
@classmethod 调用的时候直接使用类名类调用,而不是某个对象
@property 可以像访问属性一样调用方法
具体的使用看下实例:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class UserInfo(object):
    lv = 5
    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account
    def get_account(self):
        return self.__account
    @classmethod
    def get_name(cls):
        return cls.lv
    @property
    def get_age(self):
        return self._age
if __name__ == '__main__':
    userInfo = UserInfo('两点水', 23, 347073565);
    # 打印所有属性
    print(dir(userInfo))
    # 打印构造函数中的属性
    print(userInfo.__dict__)
    # 直接使用类名类调用,而不是某个对象
    print(UserInfo.lv)
    # 像访问属性一样调用方法(注意看get_age是没有括号的)
    print(userInfo.get_age)运行的结果:

 
             第1章 Python代码规范
第1章 Python代码规范