Python基礎學習---類與方法(四)
阿新 • • 發佈:2018-11-15
1
#!/usr/bin/python3
class MyClass:
"""一個簡單的類例項"""
i = 12345
def f(self):
return 'hello world'
# 例項化類
x = MyClass()
# 訪問類的屬性和方法
print("MyClass 類的屬性 i 為:", x.i)
print("MyClass 類的方法 f 輸出為:", x.f())
2
#!/usr/bin/python3 #類定義 class people: #定義基本屬性 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('runoob',10,30) p.speak()
3
#!/usr/bin/python3 #類定義 class people: #定義基本屬性 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)) #單繼承示例 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()
4
#!/usr/bin/python3 #類定義 class people: #定義基本屬性 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)) #單繼承示例 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)) #另一個類,多重繼承之前的準備 class speaker(): topic = '' name = '' def __init__(self,n,t): self.name = n self.topic = t def speak(self): print("我叫 %s,我是一個演說家,我演講的主題是 %s"%(self.name,self.topic)) #多重繼承 class sample(speaker,student): a ='' def __init__(self,n,a,w,g,t): student.__init__(self,n,a,w,g) speaker.__init__(self,n,t) test = sample("Tim",25,80,4,"Python") test.speak() #方法名同,預設呼叫的是在括號中排前地父類的方法
5
#!/usr/bin/python3
class Parent: # 定義父類
def myMethod(self):
print ('呼叫父類方法')
class Child(Parent): # 定義子類
def myMethod(self):
print ('呼叫子類方法')
c = Child() # 子類例項
c.myMethod() # 子類呼叫重寫方法
super(Child,c).myMethod() #用子類物件呼叫父類已被覆蓋的方法
6
#!/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) # 報錯,例項不能訪問私有變數
7
#!/usr/bin/python3
class Site:
def __init__(self, name, url):
self.name = name # public
self.__url = url # private
def who(self):
print('name : ', self.name)
print('url : ', self.__url)
def __foo(self): # 私有方法
print('這是私有方法')
def foo(self): # 公共方法
print('這是公共方法')
self.__foo()
x = Site('菜鳥教程', 'www.runoob.com')
x.who() # 正常輸出
x.foo() # 正常輸出
x.__foo() # 報錯
執行結果