日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
七個(gè)Python問題,來掃掃盲

這 7 個(gè)問題,我是有收獲的,整理如下:

創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、霍城網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為霍城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

1、反射算術(shù)運(yùn)算符

你可能知道 Python 里面的魔法函數(shù),比如 __add__? 和 __sub__? 代表 + - 運(yùn)算符,表示 obj +/- something,但你可能不知道還有一個(gè) __radd__,__rsub__ 函數(shù),可以表示 something +/- obj。

舉例如下:

class Dog:
def __add__(self, other):
return "from __add__"
def __radd__(self, other):
return "from __radd__"
dog = Dog()
print(dog + 1) # from __add__
print(1 + dog) # from __radd__

2、__getattr__ vs __getattribute__

__getattr__? 魔術(shù)方法只有在我們?cè)噲D獲取不存在的屬性時(shí)才會(huì)被調(diào)用,__getattribute__ 在每次我們嘗試訪問屬性時(shí)都會(huì)被調(diào)用。

代碼如下:

class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def __getattr__(self, key):
return f"{key} not found"
dog = Dog("taidi", 5)
print(dog.name) # taidi
print(dog.age) # 5
print(dog.breed) # breed not found
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def __getattribute__(self, key):
return f"{key} not found"
dog = Dog("taidi", 5)
print(dog.name) # name not found
print(dog.age) # age not found
print(dog.breed) # breed not found

3、super().__init__() 的另一種寫法

class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
class Dog(Animal):
def __init__(self, name, age, breed):
super().__init__(name, age)
self.breed = breed

等價(jià)于:

class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
class Dog(Animal):
def __init__(self, name, age, breed):
Animal.__init__(self, name, age)
self.breed = breed

請(qǐng)注意,Animal.__init__(self, name, age) 不能少了 self 參數(shù)。

4、檢查子類的方法

class Animal: pass
class Dog(Animal): pass
class Cat(Animal): pass
class GermanSheperd(Dog): pass
print(Animal.__subclasses__())
# [, ]

不過,.__subclasses__() 只能檢查直接子類。

5、多重集成時(shí),同名函數(shù),子類用的是哪一個(gè)?

class A:
def test(self):
print("A")
class B:
def test(self):
print("B")
class C(A, B):
pass

C().test() # A

A 和 B 都有 test 方法,那么 C 到底集成了哪一個(gè)呢?在 Python 中,最左邊的類優(yōu)先。

在這里,A 是最左邊的父類,因此 A 的 test 方法被集成。

多充繼承讓人困惑,不用為好。

6 __invert__ 魔法函數(shù)

class Dog:
def __invert__(self):
return "test"
dog = Dog()
print(~dog) # test

~ 運(yùn)算符代表“按位非”,通常用于反轉(zhuǎn)內(nèi)容。一個(gè)更有意義的例子如下:

class Coordinate:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f"({self.x}, {self.y})"
def __invert__(self):
return Coordinate(-self.x, -self.y)
a = Coordinate(3, 4)
b = ~a
print(a, b) # (3, 4) (-3, -4)

7、不使用 class 來創(chuàng)建類

def init(self, name, age):
self.name = name
self.age = age
def bark(self):
print("woof")
Dog = type("Dog", (), {"__init__":init, "bark":bark})


dog = Dog("taidi", 10)
print(dog.name)
print(dog.age)

# taidi
# 10

在這里,我們將 3 個(gè)參數(shù)傳遞給 type 以創(chuàng)建我們的類。

第一個(gè)參數(shù) __name__? 是類的名稱 第二個(gè)參數(shù) __bases__? 是一個(gè)包含父類的元組 第三個(gè)參數(shù) __dict__ 是一個(gè)包含屬性和方法的字典。

等價(jià)于:

class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print("woof")


網(wǎng)頁(yè)題目:七個(gè)Python問題,來掃掃盲
網(wǎng)頁(yè)地址:http://www.5511xx.com/article/coegjpg.html