面向对象
构造方法:
1 | class Student(object): //继承自object |
访问限制:
1 | "" 与java对应的public, default, protected, private |
继承多态:
1 | class Animal(): |
Duck 可以拥有父类的成员,概念和java一样
只不过的,作为动态类型的python,在方法调用时,假设要传入一个Animal类型来使用其run方法。
java要求其参数必须是Animal的类型实例,而python不做要求,只要其对象实例拥有run方法既可。
判断对象是否是某个类的实例,可以使用 isInstance(object,Class) 来判断object是否是Class的类型
获取对象信息:
使用type(), 判断对象类型。
1 | 123) type( |
使用isInstance(obj,cls) 判断obj是否是cls类型
使用 dir() 列出一个对象的所有属性和方法,返回一个字符串的list
1 | '123') dir( |
有很多内置方法,比如_add ,字符串拼接时,就是调用了这个方法,使用上,直接使用 ‘+’ ,重载操作符。
由此,可以联想到,在我们自定义的类中,也可以重载这些方法。
为了方便,判断一个对象是否某方法或属性,我们可以用 getattr(), setattr(), hasattr()
比如:
1 |
|
类属性,实例属性
感觉这个有点神坑啊
1 |
|
实例属性,尽量不要定义跟类属性一样了