Python--day14 python的类2

1、类的重写

通过继承我们可以得到父类的各种属性或者功能,但是需要注意的是父类的__init__函数不会在继承的时候被执行; 并且如果我们想重定义父类中的某个函数,该怎么办呢?

  • 使用super函数来执行父类中的__init__函数
  • 直接编写同名函数,覆盖父类函数,因为查找方式是先从子类中查找,子类中没有,才会去父类中查找。
  • class People(object):  
     
        def __init__(self,name,age):
            self.name = name
            self.age = age
     
        def test(self):  
            print('{0} testing !'.format(self.name))
     
    class ren(People):
         
        def __init__(self,name,age,sex):
            super(ren, self).__init__(name,age)  # 使用super执行父类的__init__方法,并且传递name,age 给父类的init函数
            self.sex = sex
     
        def get_name(self):
            return self.name
     
        def get_age(self):
            return self.age
     
        def get_sex(self):
            return self.sex
     
        def test(self):        # 如果存在和父类同名的函数,会直接覆盖父类函数
            print('hello world')
     
    a = ren('xpgong',27,'men')
    print(a.get_name())
    print(a.get_age())
    print(a.get_sex())
    a.test()


2、类的私有属性和私有方法

类的属性,可以称为成员变量,类的方法,可以称为成员函数。
创建对象的过程称之为实例化:当一个对象被创建后,包含三个方面的特性:对象句柄、属性和方法。
1、句柄用于区分不同的对象(实例化出来的对象的名称可以称之为句柄)
2、对象的属性和方法与类中的成员变量和成员函数对应
obj = myclass()  # 创建类的一个实例(对象)
# 通过对象来调用方法和属性
类的属性按照使用范围分为共有属性和私有属性,类的属性范围取决于属性的名称。
  •   共有属性:在类中和类外都能调用的属性
  •   私有属性:不能在类外调用的属性
定义方式:以'__'双下滑线开始的成员变量就是私有属性
  •   可以通过instance._classname__attribute方式访问
  •   内置属性:由系统在定义类的时候默认添加的,又前后双下划线构成,(__dict__,__module__)
  • class People(object):
        color = 'yellow'
        __age = 30
        def say(self):
            self.color = 'back'
            print self.color
            print self.__age
      
    ren = People()
    ren.say()
    ren.color = 'white' # 通过实例化的对象,我们就可以去修改对象的属性,但是不会影响类的成员属性
    ren.__dict__
    People.__dict__ # __dict__内置函数,通过对象调用它,会把成员函数中的变量,以字典的形式存储,如果通过类调用它,它会列出类中的所有运行过程中产生的变量,并且以字典存储。
    ren.__age # 由于__age是内部变量 ,所以无法在class外部调用,我们一般把类的私有属性,在类的成员函数中调用,这样我们就可以在外部来调用类的成员函数来调用内部变量,或者使用ren._People__age注意类的名字前要加_,一般只在测试用!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值