python3进阶_Python3 进阶教程 2020全新版
REVENGE_777
1天前
如果不創建class類的話,直接使用dog.name是會報錯的,因為一般數據類型不接受這種調用方式
0贊 · 0采集
潘某人永不屈服
2天前
class Student()定義的時候,需要在括號內寫明繼承的類Person
在__init__()方法,需要調用super(Student, self).__init__(name, gender),來初始化從父類繼承過來的屬性
0贊 · 0采集
潘某人永不屈服
3天前
加雙下劃線__ 的目的大概就是防止編碼過程中試圖使用實例修改類屬性,加上__的話,在做這樣的嘗試時會報錯,防止編碼者在達不到目的的情況下還察覺不到錯誤
0贊 · 0采集
qq_一生所愛_6
5天前
定義類屬性可以直接在 class 中定義,比如在前面的Animal類中,加入地域的類屬性:class?Animal(object):
localtion?=?'Asia'
def?__init__(self,?name,?age):
self.name?=?name
self.age?=?age
此后,通過Animal()實例化的所有對象,都可以訪問到localtion,并且得到唯一的結果。dog?=?Animal('wangwang',?1)
cat?=?Animal('mimi',?3)
print(dog.localtion)?#?==>?Asia
print(cat.localtion)?#?==>?Asia
#?類屬性,也可以通過類名直接訪問
print(Animal.localtion)?#?==>?Asia
類屬性也是可以動態添加和修改的,需要注意的是,因為類屬性只有一份,所以改變了,所有實例可以訪問到的類屬性都會變更:
0贊 · 0采集
qq_一生所愛_6
5天前
在定義 Person 類時,可以為Person類添加一個特殊的__init__()方法,當創建實例時,__init__()方法被自動調用,我們就能在此為每個實例都統一加上以下屬性:class?Person(object):
def?__init__(self,?name,?sex,?age):
self.name?=?name
self.sex?=?sex
self.age?=?age
在實例化的時候,需要提供除self以外的所有參數。xiaoming?=?Person('Xiao?Ming',?'boy',?13)
xiaohong?=?Person('Xiao?Hong',?'girl',?14)
0贊 · 0采集
qq_一生所愛_6
5天前
這些屬性也可以和普通變量一樣進行運算。比如xiaohong長大了一歲:xiaohong.age?=?xiaohong.age?+?1
0贊 · 0采集
qq_一生所愛_6
5天前
在Python中,通過class關鍵字定義一個類,比如我們需要定義一個人的類。按照 Python 的編程習慣,類名以大寫字母開頭。因此可以這樣定義:class?Person:??pass
定義了類之后,就可以對類進行實例化了,實例化是指,把抽象的類,賦予實物的過程。比如,定義好Person這個類后,就可以實例化多個Person出來了。
創建實例使用類名+(),類似函數調用的形式創建:class?Person(object):??pass?xiaohong?=?Person()?xiaoming?=?Person()
0贊 · 0采集
AE86S
2021-01-23
str() 化為字符型
0贊 · 0采集
粗實而夜雨
2021-01-23
# Enter a code
import time
def performance(f):
def fn(*args,**kwargs):
t1 = time.time()
r = f(*args,**kwargs)
t2 = time.time()
print('call %s() in %fs' % (f.__name__, (t2-t1)))
return r
return fn
@performance
def factorial(n):
return reduce(lambda x,y: x*y, range(1, n+1))
print(factorial(10))
0贊 · 0采集
酷思
2021-01-20
繼承
截圖
0贊 · 0采集
4073846
2021-01-19
Python類的定義與實例化
在Python中,通過class關鍵字定義一個類,比如我們需要定義一個人的類。按照 Python 的編程習慣,類名以大寫字母開頭。因此可以這樣定義:
class Person: pass
注意,在這個Person類的定義里面,并沒有繼承任何類,除了這樣定義以外,還可以有以下兩種定義方式。
class Person(): pass class Person(object): pass
這三種情況有什么區別呢?在Python3中,是沒有區別的,但是在Python2中,則有一定的區別。
在Python2中,對于第一種定義的方法,Person類只有有限的幾個內建函數'__doc__', '__module__', 'name',而對于第二種、第三種定義的方法,則會繼承Python object對象的更多的內建函數,可以更便捷的操作對象。這是Python2版本的差異。在Python3中,我們只需要知道這三種方式都可以定義一個類即可。
定義了類之后,就可以對類進行實例化了,實例化是指,把抽象的類,賦予實物的過程。比如,定義好Person這個類后,就可以實例化多個Person出來了。
創建實例使用類名+(),類似函數調用的形式創建:
class Person(object): pass xiaohong = Person() xiaoming = Person()
任務
請練習定義一個動物類,并創建出兩個實例dog, cat,打印實例,再比較兩個實例是否相等。
index.py
# Enter a code
本節編程練習不計算學習進度,請電腦登錄imooc.com操作
1贊 · 0采集
4073846
2021-01-19
什么是面向對象編程
截圖
0贊 · 0采集
4073846
2021-01-19
面相對象
截圖
0贊 · 0采集
qq_慕仙9428847
2021-01-19
8-5驕傲!!!
0贊 · 0采集
qq_慕仙9428847
2021-01-19
def add(x,y,f):
return f(x)+f(y)
import math
print(add(25,9,math.sqrt))#粗體字后面不要括號 號
另外,傳數的時候不能傳入變量
0贊 · 0采集
qq_慕仙9428847
2021-01-19
print(a[::-1])
###?取從后向前(相反)的元素
print(a[2::-1])
###?取從下標為2的元素翻轉讀取
0贊 · 0采集
qq_慕仙9428847
2021-01-18
class Person(object):
__slots__ = ('name', 'gender')
def __init__(self, name, gender):
self.name = name
self.gender = gender
class Students(Person):
__slots__ = ('score')
def __init__(self,gender,name,score):
self.name=name
self.gender=gender
self.score=score
Tom=Students('Ketty','girl',89)
print(Tom.score)
print(Tom.name)
print(Tom.gender)
運行成功
結果為:
89
Ketty
girl
所以要再改的話就要再定義一遍!!!!!!!!!!
0贊 · 0采集
qq_慕仙9428847
2021-01-18
class Person(object):
__slots__ = ('name', 'gender')
def __init__(self, name, gender):
self.name = name
self.gender = gender
class Students(Person):
__slots__ = ('score')
def __init__(self,score):
#self.name=name
#self.gender=gender
self.score=score
#Tom=Students('Ketty','girl',89)
Tom=Students(89)
print(Tom.score)
可以輸出89
0贊 · 0采集
qq_慕仙9428847
2021-01-18
class Person(object):
__slots__ = ('name', 'gender')
def __init__(self, name, gender):
self.name = name
self.gender = gender
class Students(Person):
__slots__ = ('score')
def __init__(self,score):
self.score=score
Tom=Students('Ketty','girl',89)
print(Students(Tom.score))
運行失敗!!!!!!!!!!
0贊 · 0采集
qq_慕仙9428847
2021-01-18
需要注意__add__()函數,它有一個參數,表示的是運算的第二個操作數,比如:r1 + r2,那么在__add__()方法中的參數,r指的就是r2,這個參數是運算符重載的時候傳遞的
0贊 · 0采集
qq_慕仙9428847
2021-01-18
4-3沒看懂
0贊 · 0采集
qq_慕仙9428847
2021-01-18
a,?b?=?b,?a?+?b? 這句語句表示b的值賦給a,a+b的值賦給b,所以a的值變了
0贊 · 0采集
qq_慕仙9428847
2021-01-18
getattr(p,?'name')?#?獲取name屬性
'Alice'
setattr(p,?'name',?'Adam')?#?設置新的name屬性
0贊 · 0采集
qq_慕仙9428847
2021-01-18
def?func(a,?b,?c=0,?*args,?**kw):
print?'a?=',?a,?'b?=',?b,?'c?=',?c,?'args?=',?args,?'kw?=',?kw
在函數調用的時候,Python解釋器自動按照參數位置和參數名把對應的參數傳進去。>>>?func(1,?2)a?=?1?b?=?2?c?=?0?args?=?()?kw?=?{}>>>?func(1,?2,?c=3)a?=?1?b?=?2?c?=?3?args?=?()?kw?=?{}>>>?func(1,?2,?3,?'a',?'b')a?=?1?b?=?2?c?=?3?args?=?('a',?'b')?kw?=?{}>>>?func(1,?2,?3,?'a',?'b',?x=99)a?=?1?b?=?2?c?=?3?args?=?('a',?'b')?kw?=?{'x':?99}
0贊 · 0采集
qq_慕仙9428847
2021-01-18
print(Animal.get_localtion())
Animal.set_localtion(3)
print(Animal.get_localtion())
0贊 · 0采集
qq_慕仙9428847
2021-01-18
def set_name(self, name):方法就是為了修改私有屬性的值。要是不用這個方法,也可以在get_name()中添加相應的代碼也可以實現。
def get_name(self, name):
self.__name = name
return self.__name
但是,在實例化對象后調用的時候,就需要帶上修改的參數,比如:
cat = Animal()
print(cat.get_name('mimi'))
0贊 · 0采集
qq_慕仙9428847
2021-01-18
class Animal(object):
def __init__(self, name, age, localtion):
self.name = name
self.age = age
self.localtion2= localtion
dog = Animal('wangwang', 1, 'GuangDong')
print(dog.name)
print(dog.age)
print(dog.localtion2)
運行成功wangwang
1
GuangDong
0贊 · 0采集
qq_慕仙9428847
2021-01-18
在外部訪問私有屬性將會拋出異常,提示沒有這個屬性。
雖然私有屬性無法從外部訪問,但是,從類的內部是可以訪問的。私有屬性是為了保護類或實例屬性不被外部污染而設計的。
0贊 · 0采集
qq_慕仙9428847
2021-01-18
在類屬性和實例屬性同時存在的情況下,實例屬性的優先級是要高于類屬性的,在操作實例的時候,優先是操作實例的屬性,另外,當實例沒有和類同名的時候,通過實例對象,不可以修改類屬性,通過實例方法修改類屬性,只是給實例綁定了一個對應的實例屬性
0贊 · 0采集
qq_慕仙9428847
2021-01-18
類屬性也是可以動態添加和修改的,需要注意的是,因為類屬性只有一份,所以改變了,所有實例可以訪問到的類屬性都會變更
def與引用函數差不多有什么都需要執行的操作可以直接在def __init__(self,name,age):里寫
0贊 · 0采集
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python3进阶_Python3 进阶教程 2020全新版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝如何,解绑
- 下一篇: sqlalchemy与mysql区别_s