1、类
1.1、类简单理解为是对多组功能(方法)的封装。为了区分全局函数,一般在pthon中定义在类中的函数叫做方法。
1.2、面向对象的三大特性:继承、封装和多态
2、创建类
2.1、创建类使用class关键字
2.2、类中定义的方法第一个参数必须为self,在调用方法是此参数无需传,默认为调用此方法的对象。
2.3、方法的调用有两种形式:第一种是使用对象直接调用,第二种是使用类调用
例如:class Person:
def setName(self,name):
self.name = name
def greet(self,age):
print("greet")
p = Person()
p.setName("hello")
print(p.name)
Person.greet(p)
3、方法私有化
1、在python中方法私有化是通过在方法前加入双下划线(__)实现的。
2、方法私有化的本质是在方法前加入了(_类名),所以私有方法也是可以直接访问的,访问方式:_类名__方法名。
例如:class Person:
def __setName(self,name):
self.name = name
p = Person()
p.__setName("xx") #报错
p._Person__setName("xx")
p.print(p.name)
4、类中可以动态添加方法和属性
4.1、动态添加属性和方法使用setattr函数。
4.2、判断某类中是否包含某个属性或方法使用hasattr或getattr函数判断。
例如:
class Person: def __setName(self, name): self.name = name p = Person() p.age = 10 print(p.age) setattr(p, "clazz", '甲') def setScore(score): p.score = score setattr(p, "setScore", setScore) p.setScore(63) print(p.score) print(p.clazz)
5、继承
5.1、python支持多继承,继承的类以逗号隔开。
5.2、多继承中如果存在相同的方法名,前面继承的方法会覆盖后继承的方法。
5.3、在python中不存在方法重载这种说法,所有后面定义了和前面相同的方法名,会覆盖前面定义的方法,也就是前面定义的方法是不可以调用的。
5.4、判断两个对象是否存在继承关系,可以使用issubclass函数。
例如:class Person1:
def setName(self,name):
self.name = name
class Person2:
def setAge(self,age):
self.age = age
class Student(Person1,Person2):
def setScore(self,score):
self.score = score
s = Student()
s.setName("小明")
print(s.name)
print(issubclass(Student,Person1))