面向对象基础——封装、继承

class Student():
  def init(self, name, age, gender):
    self.name = name
    self.age = age
    self.__gender = gender
 
  def getGender(self):
    return self.__gender
     
  def setGender(self, gender):
    self.__gender = gender
     
  def __test(self):
    print(“这是私有方法”)
     
     
student = Student(“尼古拉斯赵四”, 18, “男”)
print(student.name, student.age)
 
#私有属性,无法正常读取
print(student.__gender)
#私有属性,只能通过方法得到
print(student.getGender())
#私有方法,无法正常使用
print(student.__test)
#即使通过其他方法得到的也只是内存地址
print(student._Student__test)

—————————————————————————————————
class Person():
  def init(self, name, age,gender):
    self.name = name
    self.age = age
    self.gender = gender
     
  def sleep(self):
     print(“每个人都会睡”)
      
      
class Child(Person):
  def eat(self):
    print(“吃饱就睡,睡饱就吃”)
     
  def sleep(self):
    print(“我就特别喜欢睡”)
     
      
child = Child(“尼古拉斯赵四”, 18, “男”)
print(child.name, child.age, child.gender)
child.eat()
child.sleep()
 
—————————————————————————————————
class Person():
  def init(self, name, gender):
    self.name = name
    self.gender = gender
     
      
class Child(Person):
  def init(self, name, gender, age):
    super(Child, self).init(name, gender)
    self.age = age
     
      
class Aged(Person):
  def init(self, name, gender, age):
super().init(name, gender)
self.age = age

child = Child(“尼古拉斯赵四”, “男”, 18)
#super 使用父类的属性
#super(本类,self).init(继承父类的属性)
#self.本类独有的属性
print(child.name, child.gender, child.age)
aged = Aged(“尼古拉斯凯奇”, “男”, 88)
#super 使用父类的属性
#super().init(继承父类的属性)
#self.本类独特的属性
print(aged.name, aged.gender, aged.age)
 
—————————————————————————————————
多继承:
class A():
  def init(self, name):
    self.name = name
 
class B():
  def init(self, gender):
    self.gender = gender
     
#顺序查找,只找一个父类
class C(A, B):
  def init(self, name, gender, age):
    super().init(name)
    self.gender = gender
    self.age = age 
 
  
class D( c):
  def init(self, name, gender, age):
    super().init(name, gender, age)
     
      
c = C(“尼古拉斯赵四”, “男”, 18)
print(c.name, c.gender, c.age)
#查看直接父类
print(C.bases)
#查看所有父类
print(C.mro)
 
—————————————————————————————————
class A():
  def eat(self):
   print(“我超喜欢吃”)
    
class B():
  def init(self, name, age):
    self.name = name
    self.age = age
 
#多继承中,顺序查找,找不到的情况下才找下一个父类
class C(A,B):
  def init(self, name, age, gender):
    super().init(name, age)
    self.gender = gender
     
    
c = C(“尼古拉斯赵四”, 18, “男”)
print(c.name, c.age, c.gender)
c.eat()

猜你喜欢

转载自blog.csdn.net/A_xiansheng/article/details/94444141
今日推荐