常用内置属性
__init__
:所有的属性包含在内
__equal__
:比较方法,默认比较地址,比较内容需要重写
__ge__
:比较大小,大于等于
__gt__
:>
__lt__
:<
__le__
:<=
__str__
:默认返回地址
__del__
:销毁
__slots__
:规定不能随意增加属性
内置属性
使用dir(对象名) 列出所有对象所支持的所有属性和函数
对象属性和类属性
类属性
类属性:可以通过类对象和实例对象获取。 类属性只能通过类对象来修改,实例对象无法修改类属性;也就是在内置属性以外创建的。
直接赋值改变类属性;
calss Person(object):
type = 'human'
def __init__(self,name,age):
self.name = name
self.age = age
#实例化
p = Person('Mary',20)
#不能需改,在p中新增了一个对象属性
p.type='dog'
#修改类属性
Person.type='cat'
私有属性和方法
私有属性
以两个下划线开始的变量是私有变量。一般只在类的内部使用,可以定义为私有变量。
Python没有真正意义上的私有
例如:self.__money
是私有变量
不可以通过__money
直接访问
- 可以使用 对象名._类名__私有变量名 获取
- 在类的外部通过调用方法来显示
类方法&静态方法
通过类访问实例方法:类名.方法名(实例对象名,参数)
类方法
特点
标识关键字:@classmethod (加在前面
类方法的第一个参数是:cls(代表当前类
静态方法
特点
静态方法需要使用修饰器@staticmethod来标识。
通过类名.静态方法名的方式调用静态方法。不需要创建对象。
继承
python支持多继承
多继承的问题,两个父类中有同名的方法,继承按照定义顺序从左到右依次继承,防止继承的时候引起混乱(先来后到。
- 默认继承object类,可以省略。
- 可以继承多个类,java只可以有一个父类
- _mro _可以查看方法的调用顺序,
print(c._mro_)
方法的重写
- 完全重写
- 在需要的位置使用super()父类方法
- 其他方法重写
补充
is & isinstance的使用
is :身份运算符,用来比较是否是同一个对象。
isinstance :用来判断一个对象是否是由指定的类(或父类)实例化出来的。