1. 程式人生 > >python學習7_1面向對象基本概念和用法

python學習7_1面向對象基本概念和用法

定義 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

#調用類的時候自動出發執行
               stu1
    
def __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面向對象基本概念和用法