面向对象编程
1.类的定义
class后加类名然后是(object),object表示从哪个类继承下来
eg:用class创建一个Student类
class Student(object):
pass
在python中可以随时给对象添加属性,但是一般会在创建对象的时候把必要的属性通过 init 方法加进去,例如在创建Student类时,添加name,score属性:
class Student(object):
def __init__(self, name, score): # self参数为Student类本身,并且__init__方法的一个参数一直是self
self.name = name
self.score = score
2.访问限制
如果要让类的内部属性不被外部访问,可以将类内部的实例变量改成私有变量,方法是在类的属性名称前面加两个下划线 _
class Student(object):
def __init__(self, name, score):
self.__name = name
self.__score = score
此时已无法从类外部访问name,score(一般情况下),若要获取name,score,可以在类的内部增加方法;如果要从外部修改name,score,可以在类的内部增加方法
class Student(object):
def __init__(self, name, score):
self.__name = name
self.__score = score
# 从外部访问
def get_name(self):
return self.__name
def get_score(self):
return self.__score
# 从外部修改
def set_name(self, name):
self.__name = name
def set_score(self, score):
self.__score = score
不要尝试以下方式修改对象属性
li = Student("li", 100) li.__name = "kang"
这样会在Student类内增加一个__name变量
如果不采用在类内定义方法,也可以采用_ClassName__AttributeName访问
li = Student("li", 100)
print(li._Student__name)
3.继承
子类可以获得父类的全部属性及功能
# 定义父类 class Person(object): def __init__(self, name, sex): self.name = name self.sex = sex def print_sex(self): if self.sex == "male": print("male") elif self.sex == "female": print("female") # 子类Child继承父类Person class Child(Person): pass
4.多态
重写子类方法函数时,子类方法会覆盖父类方法函数;
若不重写,则子类直接继承父类方法函数