... print( f'arg: {arg}' )
...
>>> d = MyOtherClass( 1, 2, 4, 8, 16, 32)
如上 , MyOtherClass拥有MyClass的成员:.x、._y、.__z以及.f 。你可以通过语句super.__init__(x, y, z)初始化基类的数据成员x、._y和.__z , 该语句会调用基类的.__init__方法 。
除此之外 , MyOtherClass还有自己的成员:.__u、.__v、.__w和.f_ 。
下面 , 我们通过vars获取数据成员:
>>> vars(d)
{ 'x': 8,
'_y': 16,
'_MyClass__z': 32,
'_MyOtherClass__u': 1,
'_MyOtherClass__v': 2,
'_MyOtherClass__w': 4}
我们可以调用基类和派生类中的所有方法:
>>> d.f( 'some-argument')
instance method f called
instance:<__main_ _.MyOtherClass object at 0x7f32ef3e7048>
instance attributes:
{ 'x': 8,
'_y': 16,
'_MyClass__z': 32,
'_MyOtherClass__u': 1,
'_MyOtherClass__v': 2,
'_MyOtherClass__w': 4}
class: <class ' __main__. MyOtherClass'>
arg:some-argument
>>> d.f _( 'some-argument')
instance method f _called
instance:<__main_ _.MyOtherClass object at 0x7f32ef3e7048>
instance attributes:
{ 'x': 8,
'_y': 16,
'_MyClass__z': 32,
'_MyOtherClass__u': 1,
'_MyOtherClass__v': 2,
'_MyOtherClass__w': 4}
class: <class ' __main__. MyOtherClass'>
arg:some-argument
但是 , 如果派生类包含的某个成员与基类同名 , 则优先使用派生类的成员 。
文章插图
总结
面向对象编程是Python支持的编程范式之一 。面向对象蕴含的抽象以及表征的现实世界行为在某些时候会非常有帮助性 。然而 , 有时也可能会违反直觉 , 并为开发过程带来不必要的麻烦 。
在本文中 , 我们介绍了如何利用Python编写基本的面向对象程序 。Python中还有很多类和面向对象的功能 , 例如:
- 方法:.__repr__和.__str__
- 方法:.__new__
- 操作符
- 方法:.__getattribute__、.__getattr__、.__setattr__和.__delattr__
- 生成器
- 可调用性
- 创建序列
- 描述器
- 上下文管理
- 抽象类和成员
- 多重继承
- 使用super
- 拷贝
- 序列化
- slot
- 类修饰器
- 数据类
现如今面向对象是非常流行的编程方式 。如果你立志做一名Python开发人员 , 那么就应该学习面向对象编程 。但请不要忘记 , Python还支持其他编程范式 , 例如过程式编程、函数式编程等 , 在某些情况下也许选用这些范例更为合适 。
尽情享受编程的快乐!
原文:https://www.blog.duomly.com/object-oriented-programming-in-python/
本文为 CSDN 翻译 , 转载请注明来源出处 。
【如何理解 Python 中的面向对象编程?】
推荐阅读
- 如何使用 Python 完成 Git 管理?
- 如何让蜘蛛有效的爬行你的网站?
- 2019 年度 Python 类库 Top 10
- 用Python远程登陆服务器的最佳实践
- python+C、C++混合编程的应用
- 让腾讯大佬告诉你,写python到底用什么IDE合适
- 12道常见Python面试题,你能答对几个?
- 淘宝直播和商家合作佣金一般怎么算? 淘宝主播申请佣金链接该如何同意
- 如何实现一个简单的RPC
- 多合一小程序:小程序如何解决“用完即走,再也不来”