首页 > 编程语言 > 详细

python学习笔记——面向对象

时间:2019-05-10 16:39:40      阅读:141      评论:0      收藏:0      [点我收藏+]

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

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

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

 

python学习笔记——面向对象

原文:https://www.cnblogs.com/stacy828/p/10840171.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!