class Car: def __init__(self,brand=None,price=None): self.brand = brand self.price = price def __gt__(self, other): return self.brand.encode("gbk")>other.brand.encode("gbk") def __str__(self): return self.brand+str(self.price) lists = [Car('宝马',300000),Car('奥迪',350000),Car('奔驰',400000),] lists.sort() for i in lists: print(i)
self代表类的实例,而非类
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
Python内置类属性
__dict__ : 类的属性(包含一个字典,由类的数据属性组成)
__doc__ :类的文档字符串
__name__: 类名
__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
__bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)
静态变量:
我们可以再类中定义静态变量,静态变量属于类,既可以使用类访问,也可以使用对象访问。
动态变量:
只能由对象访问
class Car(object):
type='car'
def __init__(self, name, colour):
self.name = name
self.colour = colour
print('我被创建了。')
c1=Car('Lamborghini','yellow')
print(c1.type)
print(Car.type)
print('name:%s,colour:%s'%(c1.name,c1.colour))
类被创建的时候就会访问__init__()方法,上面的类__init__方法中请求了两个参数,所以创建的时候就必须要传入两个传输,其中self的意思是对象本身
因为作用域的原因,传入的两个参数只能在__init__()中使用,如果想要在其它地方调用,就需要将值传给self。而这个参数就被称为动态参数。
动态方法:
类的动态方法是自定义的方法,同时只有对象能够调用。class Car(object):
type='car'
def __init__(self, name, colour):
self.name = name
self.colour = colour
print('我被创建了。')
def show(self):
print("The car's name is %s and colour is %s." % (self.name, self.colour))
c1=Car('Lamborghini','yellow')
print(c1.type)print(Car.type)
print('name:%s,colour:%s'%(c1.name,c1.colour))
c1.show()
运行结果:
我被创建了。
car
car
name:Lamborghini,colour:yellow
The car's name is Lamborghini and colour is yellow.
shou()是动态方法。
私有变量:
在变量前面加入两个下划线就将这个变量变成私有变量,
私有变量只能内部访问。
私有变量能在内部定义方法进行读取
利用类的特性也可以访问私有字段
私有方法:
将方法前面加上两个下划线就会变成私有方法,外部就无法访问这个方法了。而如果要访问这个方法只能在类的内部才可以方法