python面向对象基础

python面向对象基础

  • 类定义
#定义一个学生类
class student:
  • 类变量
class student:
  #定义一个类变量count,该变量属于类,属于每一个实例,同比与java中static修饰的变量
  count=0
  • 实例变量
    java中对于变量有private、public、protected、default这四种修饰符类型,但是python中没有,python是通过变量名去控制的,Python本身没有任何机制来阻止你直接访问私有变量,他的这些权限控制机制都是假的。
    从内部机制原理讲,外部不能直接访问__name是因为Python解释器把__name这个变量名改写成了_student__name,但是,你仍然可以通过a._student__name访问,但是不建议这么做
class student:
  #定义一个类变量count,该变量属于类,属于每一个实例,同比与java中static修饰的变量
  count=0
  def __init__(self,name,age,stuno,score):
     self._name = name #单个下划线的,是类的外部可以访问,但是一般请视为私有
     self.age=age #相当于java中的public
     self.__stuno = stuno #两个下划线相当于Java中的privte
     self.__score__=score #前后都有两个下划线 这是具有特殊意义的变量
     print("这是类的构造方法")
  • 类方法
#定义一个学生类
class student:
 #定义一个类变量count,该变量属于类,属于每一个实例,同比与java中static修饰的变量
  count=0
  def __init__(self,name,age,stuno,score):
     self._name = name #单个下划线的,是类的外部可以访问,但是一般请视为私有
     self.age=age #相当于java中的public
     self.__stuno = stuno #两个下划线相当于Java中的privte
     self.__score__=score #前后都有两个下划线 这是具有特殊意义的变量
     print("这是类的构造方法")
    #定义普通方法
  def readbook(): 
     print("学生读书")
    #相当于private
  def __write():
     print("学生写作业")
    #一般视为私有,同变量规则
  def _play():
     print("学生玩耍")
    #前后都有两个下划线 这是具有特殊意义的方法
  def __test__():
     print("学生考试")
  def getStuno(self):
     return self.__getStuno
  def setScore(self,score):
     self.__score__ = score
  • 类对象

    stu1 = student("张三",23,"1000",100)
    stu2 = student("李四",25,"1001",99)
    stu3 = student()
    age = stu1.age
    print(age)
    age = stu2.age
    print(age)
    stu2.readbook()
    stu1.setScore(99.5)
    stuno1 = stu1.getStuno()
    print(stuno1)
    
  • 面向对象几大特性

  • 继承

class Peploe:
    a=1
  def __init__(self,name,age):
      self.name = name
      self.age = age
  def walk():
     print("散步")
 def printfa():
     print(a)
  
class Teacher(Peploe):
    a=2
  def printa():
     print(a)
tea = Teacher()
tea.printa()
tea.printfa()
#打印结果:
#2  
#2

Java继承实例化过程:

  • 调用父类的静态代码
  • 调用子类的静态代码
  • 执行父类的成员代码
  • 执行父类的构造函数–父类实例化完成
  • 执行子类成员代码
  • 执行子类构造函数–子类实例化完成

python中继承时的实例化过程:

  • 执行父类的静态代码
  • 执行子类的惊天代码
  • 执行子类的__new__方法
  • 在子类的__new__方法中执行父类的__new__方法
  • 调用父类的__init__方法
  • 调用子类的__init__方法
    Java   对象在调用父类中方法时,该方法调用的方法会优先使用子类的方法,调用的成员变量会优先调用父类的变量。
    Python  对象在调用父类中方法时,调用的方法和变量都优先调用子类的方法和变量。
  • 多继承
class Father:
    a=1
    def __init__(self):
        print("父类无参")
    def printfa(self):
        print(self.a)

    def speak(self):
        print("Father类的speak")
class Son:
    a=2
    def __init__(self):
        print("子类无参")
    def printa(self):
        print(self.a);
    def speak(self):
        print("Son类的speak")

class Sson(Son,Father):
    a=2
    def __init__(self):
        print("子类无参")
    def printa(self):
        print(self.a);

sson = Sson()
sson.speak()
#结果:Son类的speak
#按继承的顺序调用
  • 方法重写
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值