Pin-Jiun / Python

Python Document
0 stars 0 forks source link

9-Class #9

Open Pin-Jiun opened 1 year ago

Pin-Jiun commented 1 year ago
# 1. 定義類別
#類別能把變數以及函數封裝在裡面,統稱為類別的屬性(成員)

# 1.1 使用 class 建立類別
# 1.2 建立類別的屬性 ( 封裝在類別中的變數或函式 )

# class 類別名稱(通常為英文大寫開頭):
#     定義封裝的變數
#     定義封裝的函數

# 2. 使用類別的基本語法:類別名稱.屬性名稱

class IO:
    #類別名稱為IO
    #IO類別底下有兩個屬性,SupportedSrc以及readsrc
    SupportedSrc=["console","file"]

    def readsrc(src):
        print("Read from ",src)

print(IO.SupportedSrc)
IO.readsrc("file")

建立實體物件

# 1. 利用類別定義產生實體物件 (Instance Objects)
#先定義類別,再用類別建立出一個實體物件

# 1.1 建立初始化函式、使用 self
# class 類別名稱:
#     def __init__(self):
#       建立實體物件,放入變數obj中
# 
# obj=類別名稱()

# 1.2 建立實體物件
class Point:
    def __init__(self):
        self.x=3
        self.y=4

#建立實體物件,放入變數objp中
objp=Point()
#此時objp中含有兩個實體屬性x,y

# 1.3 在初始化函式中,代入參數
class Point:
    def __init__(self,a,b):
        self.x=a
        self.y=b

#建立實體物件,放入變數objp中
p1=Point(1,5)
#建立時可直接傳入參數資料

# 2. 操作實體物件屬性
# 2.1 基本語法:實體物件.實體屬性名稱
# 2.2 相同類別定義下,不同的實體物件操作
print(p1.x,p1.y)        #1 5

p2=Point(5,6)
print(p2.x,p2.y)        #5 6

File實體物件設計範例

class File:
    def __init__(self,name):
        self.name=name
        self.file=None
    def open(self):
        self.file=open(self.name,mode="r",encoding="utf-8")
    def read(self):
        return self.file.read()
    def close(self):
        self.file.close()

f1=File("data.txt")
f1.open()
data=f1.read()
print(data)
f1.close()
Pin-Jiun commented 1 year ago

在 Python 當中,setattr() 以及 getattr() 是常常一起出現的 function。

setattr() 可以『設定』 class 內定義變數的值,getattr() 則是可以『取得』class 內定義變數的值。


class test(object):
    a = 123
    b = 'today'

print(getattr(test, 'a'))
print(getattr(test, 'b'))

class test(object):
    a = 123
    b = 'today'

setattr(test, 'a', 777)
setattr(test, 'b', 'yesterday')
print(getattr(test, 'a'))
print(getattr(test, 'b'))

https://clay-atlas.com/blog/2019/11/30/python-chinese-tutorial-function-setattr-getattr/