zoukankan      html  css  js  c++  java
  • python学习笔记——面向对象

    1.访问限制

    练习1

    class Student(object):
        def __init__(self, name, gender):
            self.__name = name
            self.__gender = gender
    
        def get_gender(self):
            return self.__gender
            print('%s' %self.__gender)
    
        def set_gender(self,gender):
            if gender == 'male' or gender == 'female':
                self.__gender = gender
            else:
                raise ValueError('Please set a correct gender!')
    
    
    bart = Student('Bart', 'male')
    print(bart.get_gender())
    
    bart.set_gender('female')
    print(bart.get_gender())

    题外话)python 里的与或非:

    一般格式为:a & b    a | b      a and b     a or b

    如果a,b是数值变量, 则&, |表示位运算, and,or则依据是否非0来决定输出

    例如:

    1 & 2 # 输出为 0, 1 | 2 # 输出为3   (# 1&2,2在二进制里面是10,1在二进制中是01,那么01与运算10得到是0)

    2 and 0 # 返回0 , 2 and 1 # 返回1

    2.继承与多态

    python中继承与多态,我的个人理解是:
    继承是子类继承父类的全部属性和方法,多态是子类对父类的方法表现多样化,如覆盖父类里的方法和添加新的方法
     
    python的鸭子特性:不一定要传入父类的类型,只要保证传入的对象有要调用的方法就可以
    对于静态语言(例如Java)来说,如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,否则,将无法调用run()方法。
    对于Python这样的动态语言来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了

    3.获取对象信息

    type()函数:

    type(123) ,  type(abs) ,  type('ABC')

    isinstance()函数

    isinstance('a', str) , isinstance(123, int) , Isinstance([1,2,3,4,5], tuple)

    dir() 函数

    如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list,比如,获得一个str对象的所有属性和方法:

    dir('ABC')
    ['__add__', '__class__',..., '__subclasshook__', 'capitalize', 'casefold',..., 'zfill']
    getattr() , setattr() ,  hasattr()

    如:hasattr(obj, 'x')

    setattr(obj, 'name', 19)

    getattr(obj, 'y')

    练习2:为了统计学生人数,可以给Student类增加一个类属性,每创建一个实例,该属性自动增加

    class Student(object):
        count = 0
        def __init__(self, name):
            self.name = name
            Student.count += 1
    
    Bart = Student('Bart')
    print(Bart.count)
    
    lisa = Student('lisa')
    print(lisa.count)
    >>>1
    >>>2

    实例属性属于各个实例所有,互不干扰;

    类属性属于类所有,所有实例共享一个属性;

  • 相关阅读:
    坚持的力量 第十五篇
    <QT障碍之路>qt中使用串口类接收数据不完整
    《开发板 — ping得通本地,但是不能上网。route设置默认网关》
    《海思3531D 搭建环境出现的一些问题》
    《应用编程 — 进程通信 — 命名管道FIFO》
    <QT学习>QT中串口QSerialport类学习与使用
    网络视频工具/网站
    [恢]hdu 1701
    [恢]hdu 1425
    [恢]hdu 2523
  • 原文地址:https://www.cnblogs.com/stacy828/p/10840171.html
Copyright © 2011-2022 走看看