区块链技术博客
www.b2bchain.cn

必备面向对象练习求职学习资料

本文介绍了必备面向对象练习求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

68 Python 中如何定义一个自己的 class ?

Python 使用关键字 class 定制自己的类,self 表示类实例对象本身。

一个自定义类内包括属性、方法,其中有些方法是自带的。

类(对象):

class Dog(object):     pass

以上定义一个 Dog 对象,它继承于根类 object,pass 表示没有自定义任何属性和方法。

69 classmethod 使用总结

classmethod 修饰符对应的函数不需要实例化,不需要 self 参数。

第一个参数需要是表示自身类的 cls 参数,能调用类的属性、方法、实例等。

In [77]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name     ...:     ...:     def instance_method(self):     ...:         print('这是实例方法')     ...:         return self     ...:     ...:     @classmethod     ...:     def __annotations__(cls):     ...:         return "学生类"     ...:     ...:     @classmethod     ...:     def print_type_name(cls):     ...:         print('这是类上的方法,类名为 %s,注解为 %s'%(cls.__name__, cls.__annotat     ...: ions__()))
In [78]: Student().print_type_name()     ...: Student().instance_method()     ...: 这是类上的方法,类名为 Student,注解为 学生类 这是实例方法 Out[78]: <__main__.Student at 0x154ef861308>

必备面向对象练习

image-20200219192513818

70 删除对象的属性

delattr(object, name)  

删除对象的属性,在不需要某个或某些属性时,这个方法就会很有用。

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [80]: xiaoming = Student(1,'xiaoming')  In [81]: delattr(xiaoming,'id')  In [82]: xiaoming.id AttributeError: 'Student' object has no attribute 'id'  In [88]: hasattr(xiaoming,'id') # xiaoming上没有 id 属性 Out[88]: False

71 获取对象的属性

getattr(object, name[, default])  

获取对象的属性

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [106]: getattr(xiaoming,'name') Out[106]: 'xiaoming'

72 判断对象是否有某个属性名称

hasattr(object, name)

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [110]: hasattr(xiaoming,'name') Out[110]: True  In [81]: delattr(xiaoming,'id')  In [111]: hasattr(xiaoming,'id') Out[111]: False

73 实例属于某个对象判断

isinstance(object, classinfo)

判断 object 是否为类 classinfo 的实例,若是,返回true

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [21]: xiaoming = Student('001','xiaoming') In [22]: isinstance(xiaoming,Student) Out[22]: True

序列类型的基类为 Iterable,所以返回 True

In [85]: from collections.abc import Iterable  In [84]: isinstance([1,2,3],Iterable) Out[84]: True

74 子类判断

issubclass(class, classinfo)

如果 class 是 classinfo 类的子类,返回 True

In [27]: class undergraduate(Student):     ...:     def studyClass(self):     ...:         pass     ...:     def attendActivity(self):     ...:         pass     ...:  In [28]: issubclass(undergraduate,Student) Out[28]: True  In [29]: issubclass(object,Student) Out[29]: False  In [30]: issubclass(Student,object) Out[30]: True

classinfo 取值也可能为元组,若 class 是元组内某个元素类型的子类,也会返回 True

In [26]: issubclass(int, (int,float) ) Out[26]: True

75 鸭子类型

Python 是动态语言,对函数参数的类型要求很宽松,函数体内使用此类型的方法或属性时,只要满足有它们就行,不强制要求必须为这个类或子类。但是,对静态类型语言,如 Java ,参数类型就必须为此类型或子类。

例如,下面定义一个 Plane 类,定义函数 using_run

class Plane():     def run(self):         print('plane is flying...')  def using_run(duck):     print(duck.run())  using_run(Plane())

打印结果:

plane is flying...

定义一个 Clock 类,它与 Plane 类没有继承关系,但是也有一个 run 方法:

class Clock():     def run(self):         print('clock is rotating...')

using_run 函数中,同样可传入 Clock 对象:

using_run(Clock())

68 Python 中如何定义一个自己的 class ?

Python 使用关键字 class 定制自己的类,self 表示类实例对象本身。

一个自定义类内包括属性、方法,其中有些方法是自带的。

类(对象):

class Dog(object):     pass

以上定义一个 Dog 对象,它继承于根类 object,pass 表示没有自定义任何属性和方法。

69 classmethod 使用总结

classmethod 修饰符对应的函数不需要实例化,不需要 self 参数。

第一个参数需要是表示自身类的 cls 参数,能调用类的属性、方法、实例等。

In [77]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name     ...:     ...:     def instance_method(self):     ...:         print('这是实例方法')     ...:         return self     ...:     ...:     @classmethod     ...:     def __annotations__(cls):     ...:         return "学生类"     ...:     ...:     @classmethod     ...:     def print_type_name(cls):     ...:         print('这是类上的方法,类名为 %s,注解为 %s'%(cls.__name__, cls.__annotat     ...: ions__()))
In [78]: Student().print_type_name()     ...: Student().instance_method()     ...: 这是类上的方法,类名为 Student,注解为 学生类 这是实例方法 Out[78]: <__main__.Student at 0x154ef861308>

必备面向对象练习

image-20200219192513818

70 删除对象的属性

delattr(object, name)  

删除对象的属性,在不需要某个或某些属性时,这个方法就会很有用。

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [80]: xiaoming = Student(1,'xiaoming')  In [81]: delattr(xiaoming,'id')  In [82]: xiaoming.id AttributeError: 'Student' object has no attribute 'id'  In [88]: hasattr(xiaoming,'id') # xiaoming上没有 id 属性 Out[88]: False

71 获取对象的属性

getattr(object, name[, default])  

获取对象的属性

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [106]: getattr(xiaoming,'name') Out[106]: 'xiaoming'

72 判断对象是否有某个属性名称

hasattr(object, name)

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [110]: hasattr(xiaoming,'name') Out[110]: True  In [81]: delattr(xiaoming,'id')  In [111]: hasattr(xiaoming,'id') Out[111]: False

73 实例属于某个对象判断

isinstance(object, classinfo)

判断 object 是否为类 classinfo 的实例,若是,返回true

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [21]: xiaoming = Student('001','xiaoming') In [22]: isinstance(xiaoming,Student) Out[22]: True

序列类型的基类为 Iterable,所以返回 True

In [85]: from collections.abc import Iterable  In [84]: isinstance([1,2,3],Iterable) Out[84]: True

74 子类判断

issubclass(class, classinfo)

如果 class 是 classinfo 类的子类,返回 True

In [27]: class undergraduate(Student):     ...:     def studyClass(self):     ...:         pass     ...:     def attendActivity(self):     ...:         pass     ...:  In [28]: issubclass(undergraduate,Student) Out[28]: True  In [29]: issubclass(object,Student) Out[29]: False  In [30]: issubclass(Student,object) Out[30]: True

classinfo 取值也可能为元组,若 class 是元组内某个元素类型的子类,也会返回 True

In [26]: issubclass(int, (int,float) ) Out[26]: True

75 鸭子类型

Python 是动态语言,对函数参数的类型要求很宽松,函数体内使用此类型的方法或属性时,只要满足有它们就行,不强制要求必须为这个类或子类。但是,对静态类型语言,如 Java ,参数类型就必须为此类型或子类。

例如,下面定义一个 Plane 类,定义函数 using_run

class Plane():     def run(self):         print('plane is flying...')  def using_run(duck):     print(duck.run())  using_run(Plane())

打印结果:

plane is flying...

定义一个 Clock 类,它与 Plane 类没有继承关系,但是也有一个 run 方法:

class Clock():     def run(self):         print('clock is rotating...')

using_run 函数中,同样可传入 Clock 对象:

using_run(Clock())

68 Python 中如何定义一个自己的 class ?

Python 使用关键字 class 定制自己的类,self 表示类实例对象本身。

一个自定义类内包括属性、方法,其中有些方法是自带的。

类(对象):

class Dog(object):     pass

以上定义一个 Dog 对象,它继承于根类 object,pass 表示没有自定义任何属性和方法。

69 classmethod 使用总结

classmethod 修饰符对应的函数不需要实例化,不需要 self 参数。

第一个参数需要是表示自身类的 cls 参数,能调用类的属性、方法、实例等。

In [77]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name     ...:     ...:     def instance_method(self):     ...:         print('这是实例方法')     ...:         return self     ...:     ...:     @classmethod     ...:     def __annotations__(cls):     ...:         return "学生类"     ...:     ...:     @classmethod     ...:     def print_type_name(cls):     ...:         print('这是类上的方法,类名为 %s,注解为 %s'%(cls.__name__, cls.__annotat     ...: ions__()))
In [78]: Student().print_type_name()     ...: Student().instance_method()     ...: 这是类上的方法,类名为 Student,注解为 学生类 这是实例方法 Out[78]: <__main__.Student at 0x154ef861308>

必备面向对象练习

image-20200219192513818

70 删除对象的属性

delattr(object, name)  

删除对象的属性,在不需要某个或某些属性时,这个方法就会很有用。

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [80]: xiaoming = Student(1,'xiaoming')  In [81]: delattr(xiaoming,'id')  In [82]: xiaoming.id AttributeError: 'Student' object has no attribute 'id'  In [88]: hasattr(xiaoming,'id') # xiaoming上没有 id 属性 Out[88]: False

71 获取对象的属性

getattr(object, name[, default])  

获取对象的属性

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [106]: getattr(xiaoming,'name') Out[106]: 'xiaoming'

72 判断对象是否有某个属性名称

hasattr(object, name)

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [110]: hasattr(xiaoming,'name') Out[110]: True  In [81]: delattr(xiaoming,'id')  In [111]: hasattr(xiaoming,'id') Out[111]: False

73 实例属于某个对象判断

isinstance(object, classinfo)

判断 object 是否为类 classinfo 的实例,若是,返回true

In [79]: class Student():     ...:     def __init__(self,id=None,name=None):     ...:         self.id = id     ...:         self.name = name  In [21]: xiaoming = Student('001','xiaoming') In [22]: isinstance(xiaoming,Student) Out[22]: True

序列类型的基类为 Iterable,所以返回 True

In [85]: from collections.abc import Iterable  In [84]: isinstance([1,2,3],Iterable) Out[84]: True

74 子类判断

issubclass(class, classinfo)

如果 class 是 classinfo 类的子类,返回 True

In [27]: class undergraduate(Student):     ...:     def studyClass(self):     ...:         pass     ...:     def attendActivity(self):     ...:         pass     ...:  In [28]: issubclass(undergraduate,Student) Out[28]: True  In [29]: issubclass(object,Student) Out[29]: False  In [30]: issubclass(Student,object) Out[30]: True

classinfo 取值也可能为元组,若 class 是元组内某个元素类型的子类,也会返回 True

In [26]: issubclass(int, (int,float) ) Out[26]: True

75 鸭子类型

Python 是动态语言,对函数参数的类型要求很宽松,函数体内使用此类型的方法或属性时,只要满足有它们就行,不强制要求必须为这个类或子类。但是,对静态类型语言,如 Java ,参数类型就必须为此类型或子类。

例如,下面定义一个 Plane 类,定义函数 using_run

class Plane():     def run(self):         print('plane is flying...')  def using_run(duck):     print(duck.run())  using_run(Plane())

打印结果:

plane is flying...

定义一个 Clock 类,它与 Plane 类没有继承关系,但是也有一个 run 方法:

class Clock():     def run(self):         print('clock is rotating...')

using_run 函数中,同样可传入 Clock 对象:

using_run(Clock())

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 必备面向对象练习求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们