python學習7_1面向對象基本概念和用法
阿新 • • 發佈:2018-08-15
定義 cal 自己的 room ini 所有 自己 發生 觸發
定義類時會立刻觸發類體代碼的運行,產生名稱空間
class OldBoySchool: school = ‘oldBoy‘ def choose_course(self): print(‘is choosing course‘)
訪問類的屬性
print(OldBoySchool.school)
訪問類的方法,對類來說,類方法就是普通的方法
print(OldBoySchool.choose_course(‘123‘))
stu1 = OldBoySchool() stu2 = OldBoySchool() #所有對象和類變量的內存地址都一樣print(id(stu1.school), id(stu2.school),id(OldBoySchool.school))
#對象的綁定方法地址一樣,對象和類的方法地址不一樣 print(id(stu1.choose_course), id(stu2.choose_course),id(OldBoySchool.choose_course)) #2289801247880 2289801247880 2289804409440
重新定義一個類
class OldBoySchool2: school = ‘oldBoy‘ #調用類的時候自動出發執行 stu1def __init__(self, name, age, sex): self.name = name # stu1.name self.age = age self.sex = sex def choose_course(self): print(‘%s is choosing course‘%self.name)
調用類發生了兩件事
1、會產生一個空對象
2、會觸發類中__init__函數的運行,將空對象連同括號內的參數一同傳入
stu1 = OldBoySchool2("jack", 18, "male") stu2 = OldBoySchool2("tom", 19, "female")
對象名稱空間中存在自己獨有的屬性
print(stu1.__dict__) # {‘name‘: ‘jack‘, ‘age‘: 18, ‘sex‘: ‘male‘} print(stu2.__dict__) # {‘name‘: ‘tom‘, ‘age‘: 19, ‘sex‘: ‘female‘}
先從自己的名稱空間中找,再去類的名稱空間中去找
print(stu1.name) #自己的名稱空間 print(stu1.school) #類的名稱空間
類的數據屬性是共享給所有對象用,大家的內存地址都一樣
print(id(stu1.school)) print(id(OldBoySchool2.school))
相當於stu1添加了一個school屬性,不影響類的屬性
stu1.school = ‘xxx‘
類中定義的函數是綁定給對象用的,稱之為綁定方法
用原有的函數需要傳自身對象,比較麻煩,所以用綁定方法,就不用傳自身對象了
print(id(OldBoySchool2.choose_course)) # 2492997074320 print(id(stu1.choose_course)) # 2492993911944 print(id(stu2.choose_course)) # 2492993911944
調用方法
stu1.choose_course() # jack is choosing course stu2.choose_course() # tom is choosing course
面向對象舉例:
class Mysql: def __init__(self, host, port, db, charset): self.host = host self.port = port self.db = db self.charset = charset def exc1(self, sql): conn = connect(self.host, self.port, self.db, self.charset) conn.execute(sql) return XXX def exc2(self, proc_name): conn = connect(self.host, self.port, self.db, self.charset) conn.call_proc(proc_name) return XXX obj=Mysql(‘1.1.1.1‘,3306,‘db1‘,‘utf-8‘) obj.exc1(‘select * froom xxx‘) obj.exc2(‘p1‘)
python學習7_1面向對象基本概念和用法