python類定義的講解_python面向對象、自定義類等使用實例講解

python 面向對象相對別的語言來說缺少兩個功能:

1、python不具備重載,重載是指在同一個類中,使得方法有相同的名稱,但是有不同的參數列表,但由于python函數具有強大的參數處理功能,因此這不是一個問題。

2、python不存在強制數據隱私的機制,不過若想創建屬性(實例變量或方法)時在屬性名前以兩個下劃線引導,python就會阻止無心的訪問,因此可以認為是私有的。

如果一個方法是預定義的特殊方法,則應該在方法名前后加上雙下劃線,例如__sub__()和__add__()。

一、自定義類

1、方法一

class className:

suite

2、方法二

class className(base_class):

suite

二、屬性與方法

import math

class Point(object):

def __init__(self,x,y):

self.x = x

self.y = y

def __eq__(self,other):

return self.x == other.x and self.x == other.y

def distance_from_origin(self):

return math.hypot(self.x,self.y)

def __str__(self):

return '({0.x},{0.y})'.format(self)

a = Point(1,2)

b = Point(2,2)

b.distance_from_origin()

Point.distance_from_origin(b)

a == b

str(a)

可預定義的比較方法如下:

b_1_201802040111006041.jpg

默認情況下,自定義類的所有實例都是可哈希運算的,因此,可對其調用hash(),也可以將其作為字典的鍵,或存儲在集合中。但是如果重新實現了__eq__(),實例就不再是可哈希運算的了。

為了避免不適當的比較,可以使用如下三種方法:

使用斷言

assert isintance(object,Class),'object is not in the Class'

產生TypeError異常

if not isinstance(object,Class):

raise TypeError('object is not in the Class')

返回NotImplemented

if not isinstance(object,Class):

return NotImplement-ented

如果返回了NotImplemented,Python就會嘗試調用other.__eq__(self)來查看object是否支持與Class類的比較,如果也沒有類似的方法,Python將放棄搜索,并產生TypeError異常。

內置的isinstance()函數以一個對象與一個類為參數,如果該對象屬于該類(或類元組中的某個類),或屬于給定類的基類,就返回True

使用super()

使用super()函數可以使用基類的方法

def __init__(self,x,y,radius):

super().__init__(x,y)

self.radius = radius

在使用super()時,可以不用寫self參數。

使用特性進行屬性存取控制

一些方法返回一個單獨的值,從用戶的角度講,可以將方法可以當做數據屬性使用。以下是一個實例

class Circle(object):

def __init__(self,radius):

self.radius = radius

def area(self):

return self.radius * 2

area = property(area)

c = Circle(4)

c.area

或可寫為

class Circle(object):

def __init__(self,radius):

self.radius = radius

@property

def area(self):

return self.radius * 2

c = Circle(4)

c.area

提供了一種驗證數據有效性的方法

class Circle(object):

def __init__(self,x,y,radius):

self.radius = radius

self.x = x

self.y = y

def area(self):

return self.radius * 2

area = property(area)

@property

def radius(self):

return self.__radius

@radius.setter

def radius(self,radius):

assert radius > 0,"radius must be nonzero and non-negative"

self.__radius = radius

c = Circle(1,-2,4)

c.area

希望與廣大網友互動??

點此進行留言吧!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533700.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533700.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533700.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubutun 更換網絡源_「ubuntu腳本1」開啟ssh替換第三方源開啟tab鍵補齊屏蔽nouveau

Ubuntu初始化腳本,安裝顯卡驅動專用初始化腳本替換apt源為國內清華源,增加docker-ce國內源開啟tab鍵補齊桌面版開啟ssh僅支持Ubuntu16/18桌面版安裝gcc make屏蔽nouveau 自動重啟服務器生效#!/bin/bash #檢測網絡是否通暢 ping -w 5 qq.com || { echo "網絡異常,腳本終止&…

地理信息系統軟件測試培訓,地理信息系統軟件測試方法技術方案

本發明專利技術涉及一種軟件測試方法。更具體地說,本發明專利技術涉及一種地理信息系統軟件測試方法,包括:編寫測試用例文檔并腳本化形成測試腳本;結合路徑分析方法設置測試用例,按照測試用例配套至少一組測試原始數據…

matlab meshgrid函數_matlab入門(三)圖像可視化

matlab圖像可視化基本要求(1)掌握圖形窗口的創建與控制,以及圖形窗口的基本操作;(2)熟練掌握二維和三維繪圖基本的命令、線型控制;(3)初步掌握用特殊的圖形來表現特殊數據的性質,如面積圖、直方 圖、餅圖等。(4)掌握坐標軸的控制和…

hashmap remove 沒釋放內存_java從零開始手寫 redis(13)HashMap 源碼原理詳解

為什么學習 HashMap 源碼?作為一名 java 開發,基本上最常用的數據結構就是 HashMap 和 List,jdk 的 HashMap 設計還是非常值得深入學習的。無論是在面試還是工作中,知道原理都對會我們有很大的幫助。本篇的內容較長,建…

南京高中計算機老師,南京市教育局召開中小學教師信息技術應用能力提升工程2.0市級專家組工作會議...

2021年3月2日上午,南京市中小學教師信息技術應用能力提升工程2.0市級專家組工作會議在雨花臺區教師發展中心召開。市教育局副局長祁壽東出席會議并講話,市教研室、教科所、電教館、教師發展學院主要負責同志,市級專家團隊成員及各區教師發展中…

python計算執行時間的函數_[python] 統計函數運行時間

第一種: import time def time_me(fn): #fn 是要修飾/修改 的函數 def _wrapper(*args, **kwargs): #這個 _wrapper(*args, **kwargs) 則代指fn, *args 代表一般變量參數, **kwargs代表 字典,哈希等參數 start time.perf_counter() fn(*args…

arthas 排查內存溢出_Java 應用線上問題排查思路、常用工具小結

前言本文總結了一些常見的線上應急現象和對應排查步驟和工具。分享的主要目的是想讓對線上問題接觸少的同學有個預先認知,免得在遇到實際問題時手忙腳亂。畢竟作者自己也是從手忙腳亂時走過來的。只不過這里先提示一下。在線上應急過程中要記住,只有一個…

計算機個性化定制服務課題,服務網絡的構建與面向增量式需求的動態定制方法-計算機科學與技術專業論文.docx...

服務網絡的構建與面向增量式需求的動態定制方法-計算機科學與技術專業論文Classified Index: TP315 U.D.C: 681.3Dissertation for the Master’s Degree in EngineeringSERVICE NETWORK CONSTRUCTION AND DYNAMIC CUSTOMIZATION METHOD FOR SUBJECTIVE CHANGES OF CUSTOMER RE…

flutter listview 滾動到指定位置_Flutter 布局原理及實戰

1. Flutter UI架構Flutter將視圖數據抽象成為三個部分,即Widget樹、Element樹和RenderObject樹。Widget樹:控件的配置信息,不涉及渲染,更新代價極低。RenderObject樹:真正的UI渲染樹,負責渲染UI&#xff0c…

計算機的屏幕約是16平方分米嗎,小明的臥室有16平方分米對不對

小明的臥室有16平方分米對不對不對,應該是16平方米不對錯! 16平方分米太小了不對,那么小怎么可能住人。不正確應該是16平方米xiao ming de wo shi you 1 6 ping fang fen mi dui bu dui32平方分米涂上每平方分米的96克油漆,需要幾克32平方分米需要油漆30…

python引用傳遞_python 是值傳遞還是引用傳遞 知乎

展開全部 那要看數據類型了,21135261int,float,str這種就是傳值,list,dict,類的實例,自定義對象都是穿4102引用。 下面1653是示例代碼:def change(int1,float1,str1,dict1,obj1,list…

雷神開機logo更改_國產外星人雷神再發新品 911MT逐影者RTX2060光追游戲本評測

隨著NVIDIA發布了筆記本20系顯卡之后,宣示著全民進入了“RTX光線追蹤時代”,各種新款的游戲也紛紛宣布支持“光線追蹤”技術來吸引更多的玩家,似乎現在游戲本上沒有個“RTX”貼紙就已經不好意思跟別人打招呼了。說到2019年的RTX新品&#xff…

AJAX框架衣柜內部布局,?最合理的衣柜內部布局解析,3大細節不容小覷

時常有業主或者朋友問小輕,最合理的衣柜內部布局應該是怎樣的,確實這對于非業內人士一般都是不太清楚的,即使有的朋友已經有了豐富的生活經驗,甚至是業內人士也不一定對此完全了解。那么到底最合理的衣柜內部布局是怎樣的呢&#…

python爬取數據保存為csv時生成編號_將爬取到到數據以CSV格式存儲

CSV文件存儲 CSV,全稱為Comma-Separated Values,中文可以叫做逗號分隔值或字符分隔值,其文件以純文本形式存儲表格數據。該文件是一個字符序列,可以由任意數目的記錄組成,記錄間以某種換行符分隔。每條記錄由字段組成&…

博達3956交換機配置手冊_網絡設備維保淺談之交換機維保

隨著信息化的飛速發展,交換機作為信息流通的承載者,是應用最為廣泛的網絡設備之一,其作用不言而喻。因此,在日產使用中,要注意交換機這種核心的設備的維護與保養,以免引發故障。交換機運維需要注意哪些問題…

java cas原理_Java并發之原子變量及CAS算法-上篇

Java并發之原子變量及CAS算法-上篇編輯?概述本文主要講在Java并發編程的時候,如果保證變量的原子性,在JDK提供的類中是怎么保證變量原子性的呢?。對應Java中的包是:java.util.concurrent.atomic包下。因為涉及到了CAS算法&#x…

node ajax validator,使用validator.js對字符串數據進行驗證

validator.js是一個對字符串進行數據驗證和過濾的工具庫,同時支持Node端和瀏覽器端,github地址是https://github.com/chriso/validator.js主要API如下:驗證APIcontains(str, seed)驗證str中是否含有seedequals(str, comparison)驗證是否相等i…

css span 右端對齊_CSS標準文檔流

web頁面的制作,是個“流”,像水流一樣,必須從上往下,一點點的編織,不像畫畫,可以這個地方畫一個,另一個地方畫一個,隨意而為。標準文檔流的一些微觀現象1. 空白折疊現象1)標簽與標簽…

composer升級_Composer 使用姿勢與 Lumen 升級指南

Composer 使用姿勢這里主要說說 composer.json 和 composer.lock 文件的作用。composer.jsoncomposer.json 文件包含了項目的依賴和其它的一些元數據,使用 JSON format 編寫。當初次調用 composer install 時,Composer 會根據 composer.json 文件&#x…

服務器間傳文件$d,基于OpenSSH+WinSCP完成Windows服務器之間的文件傳輸

背景經常會遇到在不同服務器之間傳輸文件,Linux和Linux之間用命令rsync, windows和linux之間普遍是有圖形化界面的ftp軟件,老黃平時用的比較多的是FileZilla。Windows和Windows之間的話,90%都是在一臺機器復制,到另一臺…