python面向对象编程

面向对象编程

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.多态

重写子类方法函数时,子类方法会覆盖父类方法函数;
若不重写,则子类直接继承父类方法函数

你可能感兴趣的:(python面向对象编程)