python3 class的使用

靖意风發表於2024-10-22

1. class 的使用和定義

#!/usr/bin/python3
 
class JustCounter:
    __secretCount = 0  # 私有變數
    publicCount = 0    # 公開變數
 
    def count(self):
        self.__secretCount += 1
        self.publicCount += 1
        print (self.__secretCount)
 
counter = JustCounter()
counter.count()
counter.count()
print (counter.publicCount)
print (counter.__secretCount)  # 報錯,例項不能訪問私有變數
$ ./1_class.py
1
2
2
Traceback (most recent call last):
  File "./1_class.py", line 16, in <module>
    print (counter.__secretCount)  # 報錯,例項不能訪問私有變數
AttributeError: 'JustCounter' object has no attribute '__secretCount'

2. 使用__init__() 為物件設定初始值

#!/usr/bin/python3

#類定義
class people:
    #定義基本屬性,這裡可以省略,在__init__()中全部賦值就可以
    name = ''
    age = 0
    #定義私有屬性,私有屬性在類外部無法直接進行訪問
    __weight = 0
    #定義構造方法
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("%s 說: 我 %d 歲。" %(self.name,self.age))

# 例項化類
p = people('wwj',10,30)
p.speak()

#類外訪問類的資料,不能訪問p.__weight
print("name:%s, age:%d" %(p.name, p.age))
#print("weight:%d" %(p.__weight))
$ ./class_test.py
wwj 說: 我 10 歲。
name:wwj, age:10

繼承

#單繼承示例
class student(people):
    grade = ''
    def __init__(self,n,a,w,g):
        #呼叫父類的構函
        people.__init__(self,n,a,w)
        self.grade = g
    #覆寫父類的方法
    def speak(self):
        print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))

s = student('ken',10,60,3)
s.speak()

相關文章