亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這樣寫有什么不妥的地方嗎?

class Person:

? ? name=""

? ? def __init__(self):

? ? ? ?pass

? ? ? ??

def compare_name(Person_list,Person_c):

? ??

? ? for i in range(0,len(Person_list)):

? ? ? ? if i <= (len(Person_list)-2):

? ? ? ? ? ? name_a = Person_list[i].name.lower()

? ? ? ? ? ? name_b = Person_list[i+1].name.lower()

? ? ? ? ? ? if name_a > name_b:

? ? ? ? ? ? ? ? lowercompare=1

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? lowercompare=0

? ? ? ? ? ? name_a = Person_list[i].name.upper()

? ? ? ? ? ? name_b = Person_list[i+1].name.upper()

? ? ? ? ? ? if name_a > name_b:

? ? ? ? ? ? ? ? uppercompare=1

? ? ? ? ? ? else:

? ? ? ? ? ? ? ? uppercompare=0

? ??

? ? ? ? ? ? if lowercompare ==1 and uppercompare ==1:

? ? ? ? ? ? ? ? Person_c = Person_list[i+1]

? ? ? ? ? ? ? ? Person_list[i+1] = Person_list[i]

? ? ? ? ? ? ? ? Person_list[i] = Person_c

? ? return Person_list


p1 = Person()

p1.name = 'Bart'


p2 = Person()

p2.name = 'Adam'


p3 = Person()

p3.name = 'Lisa'


p4=Person()

L1 = [p1, p2, p3]

L2 = compare_name(L1,p4)


print L2

print L2[0].name

print L2[1].name

print L2[2].name

還有為什么參考代碼里面,類沒有name變量,P1 P2 P3 初始化時可以去給那么賦值,這點有疑問

正在回答

4 回答

1、python是動態語言,實例對象的屬性變量、方法是可以動態生成的,不同的實例對象包含的屬性可以不同,這種寫法表示name是類的屬性,實例對象可以直接調用類型屬性,在存在名稱沖突時,系統優先取實例對象的同名屬性
class?Person:????
????name=""????
????def?__init__(self):???????
????????pass
...
p1?=?Person()
p1.name?=?'Bart'
p2?=?Person()
p2.name?=?'Adam'
p3?=?Person()
p3.name?=?'Lisa'
#Person.Name=''

def?compare_name(Person_list,Person_c):
這個函數中的第二個參數是不必要的,可以刪除,Person_c只是一個臨時變量。
函數里面的轉換為小寫比較和轉換為大寫比較只需要執行一種操作即可。

針對排序還可以調用sorted函數實現排序功能
def?compare_name(Person_list):????????
????return?sorted(Person_list,lambda?x,y:cmp(x.name.upper(),y.name.upper()))


2 回復 有任何疑惑可以回復我~

cmp(x,y)用于比較兩個對象,如果x<y,返回-1,如果x>y,返回1;如果x==y,返回0

0 回復 有任何疑惑可以回復我~

cmp是什么啊


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
python進階
  • 參與學習       255563    人
  • 解答問題       3038    個

學習函數式、模塊和面向對象編程,掌握Python高級程序設計

進入課程

這樣寫有什么不妥的地方嗎?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號