类的私有方法实例如下:
实例(Python 3.0+)
class Site: def __init__(self, name, url): self.name = name
self.__url = url
def who(self): print('name : ', self.name)
print('url : ', self.__url)
def __foo(self):
print('这是私有方法')
def foo(self):
print('这是公共方法')
self.__foo()
x = Site('菜鸟教程', 'www.runoob.com')x.who() x.foo() x.__foo()
以上实例执行结果:

类的专有方法:
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方
运算符重载
Python同样支持运算符重载,我们可以对类的专有方法进行重载,实例如下:
实例(Python 3.0+)
class Vector: def __init__(self, a, b): self.a = a
self.b = b
def __str__(self): return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other): return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)v2 = Vector(5,-2)print (v1 + v2)
以上代码执行结果如下所示:
Vector(7,8)
小盟主
165***0317@qq.com
针对 __str__ 方法给出一个比较直观的例子:
class people: def __init__(self,name,age): self.name=name self.age=age def __str__(self): return '这个人的名字是%s,已经有%d岁了!'%(self.name,self.age)a=people('孙悟空',999)print(a)输出:
小盟主
165***0317@qq.com
JasinChen
402***306@qq.com
最新的 Python3.7 中(2018.07.13),对类的构造函数进行了精简。
3.7 版本:
相当于以前的:
JasinChen
402***306@qq.com
selfeasy
ZLT***lfeasy@qq.com
Python3 中类的静态方法、普通方法、类方法
静态方法: 用 @staticmethod 装饰的不带 self 参数的方法叫做静态方法,类的静态方法可以没有参数,可以直接使用类名调用。
普通方法: 默认有个self参数,且只能被对象调用。
类方法: 默认有个 cls 参数,可以被类和对象调用,需要加上 @classmethod 装饰器。
class Classname: @staticmethod def fun(): print('静态方法') @classmethod def a(cls): print('类方法') # 普通方法 def b(self): print('普通方法')Classname.fun()Classname.a()C = Classname()C.fun()C.a()C.b()