網站首頁 編程語言 正文
python class(object)的含義
在python2中有區別,在Python3中已經沒有區別:
object為默認類,表示繼承關系
class Person:
? ? name = "zhengtong"
class Animal(object):
? ? name = "chonghong"
?
if __name__ == "__main__":
? ? x = Person()
? ? print( "Person", dir(x))
?
? ? y = Animal()
? ? print ("Animal", dir(y))
Python3中運行結果:
person [‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’, ‘name’]
animal [‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’, ‘name’]
class, class()和class(object)的區別
為什么要繼承object類
Python2中,遇到 class A 和 class A(object) 是有概念上和功能上的區別的,分別稱為經典類(舊式類,old-style)與新式類(new-style)的區別。python2中為什么在進行類定義時最好要加object,加 & 不加如下實例。
歷史進程:2.2以前的時候type和object還不統一. 在2.2統一到3之間, 要用class
- Foo(object)來申明新式類, 因為它的type是 < type ‘type’ > 。
- 不然的話, 生成的類的type就是 <type ‘classobj’ >。
繼承object類的原因:主要目的是便于統一操作。
- 在python 3.X中已經默認繼承object類。
# -.- coding:utf-8 -.-
# __author__ = 'zhengtong'
class Person:
"""
不帶object
"""
name = "zhengtong"
class Animal(object):
"""
帶有object
"""
name = "chonghong"
if __name__ == "__main__":
x = Person()
print "Person", dir(x)
y = Animal()
print "Animal", dir(y)
Person ['__doc__', '__module__', 'name']
Animal ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__',?
'__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',?
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'name']
Person類很明顯能夠看出區別,不繼承object對象,只擁有了doc , module 和 自己定義的name變量, 也就是說這個類的命名空間只有三個對象可以操作。
Animal類繼承了object對象,擁有了好多可操作對象,這些都是類中的高級特性。
class, class()和class(object)的區別
python2中寫為如下兩種形式都是不能繼承object類的,也就是說是等價的。
def class:
def class():
繼承object類是為了讓自己定義的類擁有更多的屬性,以便使用。當然如果用不到,不繼承object類也可以。
python2中繼承object類是為了和python3保持一致,python3中自動繼承了object類。
python2中需要寫為如下形式才可以繼承object類。
def class(object):
總結
原文鏈接:https://blog.csdn.net/yangwangnndd/article/details/89384389
相關推薦
- 2022-11-17 Android四種常見布局方式示例教程_Android
- 2022-07-13 File類的基本運用、查找、刪除
- 2023-01-15 Python?pytest.main()運行測試用例_python
- 2022-05-12 Python 正則替換內容
- 2022-07-08 docker部署釘釘機器人報警通知的實現_docker
- 2024-02-29 UNI-APP在自定義組件中內嵌H5/Html網頁,可自定義webview大小,加載不閃屏
- 2022-05-12 Kotlin 代數/枚舉/密封類
- 2022-06-13 C語言結構體超詳細講解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支