国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python方法(一) - 類的內部方法

Loong_T / 1960人閱讀

摘要:輸出來是一個對象這樣便是最普通的用法了。但其實不是實例化一個類的時候第一個被調用的方法。對象通過提供方法可以模擬函數的行為,如果一個對象提供了該方法,就可以像函數一樣使用它,也就是說等同于調用。

類(Class)和實例(Instance)
類是抽象的模板
實例是根據類創建出來的一個個具體的“對象”
每個對象都擁有相同的方法,但各自的數據可能不同
方法就是與實例綁定的函數,和普通函數不同,方法可以直接訪問實例的數據;
super
class OldDog():  
   def __init__(self):  
       print("I am an old dog !")
       self.hungry = True  

   def eat(self):  
       if self.hungry:  
           print("I eat it !")
           self.hungry = False  
       else:  
           print("No thanks!")

class NewDog(OldDog):  
   def __init__(self):  
       super().__init__()  
       print("I am a new dog!")

olddog = OldDog()
olddog.eat()
olddog.eat()
newdog = NewDog()
newdog.eat()
newdog.eat()

當子類繼承父類的時候,我們繼承了父類的方法。子類中含有__init__時,不會自動調用父類__init__,如需使用父類__init__中的變量,則需要在子類__init__中顯式調用    

repr

作用

返回實例化對象的表達

code

class MyClass() :
    def __str__(self) :
        return "我是MyClass的一個實例"
    def __repr__(self) :
        return "這回連print都省了"
 
a=MyClass()

result

>>> print(a)
我是MyClass的一個實例
>>> a
這回連print都省了

鏈接

一個flask json返回值的問題
https://www.v2ex.com/t/195379
new__、__init__、__call
__new__: 對象的創建,是一個靜態方法,第一個參數是cls。(想想也是,不可能是self,對象還沒創建,哪來的self)
__init__ : 對象的初始化, 是一個實例方法,第一個參數是self。
__call__ : 對象可call,注意不是類,是對象
先有創建,才有初始化。即先__new__,而后__init__。

new

class Bar(object): 
  pass
  
class Foo(object): 
  def __new__(cls, *args, **kwargs): 
    return Bar() 
  
print Foo()
輸出來是一個Bar對象

init

class Person(object):
  """Silly Person"""
 
  def __init__(self, name, age):
    self.name = name
    self.age = age
 
  def __str__(self):
    return "" % (self.name, self.age)
 
if __name__ == "__main__":
  piglei = Person("piglei", 24)
  print piglei
這樣便是__init__最普通的用法了。但__init__其實不是實例化一個類的時候第一個被調用 的方法。
當使用 Persion(name, age) 這樣的表達式來實例化一個類時,最先被調用的方法 其實是 __new__ 方法。

call

對象通過提供__call__(slef, [,*args [,**kwargs]])方法可以模擬函數的行為,如果一個對象x提供了該方法,就可以像函數一樣使用它,也就是說x(arg1, arg2...) 等同于調用x.__call__(self, arg1, arg2) 。模擬函數的對象可以用于創建防函數(functor) 或代理(proxy).
class Foo(object): 
  def __call__(self): 
    pass
  
f = Foo()#類Foo可call 
f()#對象f可call

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42291.html

相關文章

  • python基礎教程:類

    摘要:類對象被創建時存在于類命名空間內的所有名稱都是有效的屬性名稱。類的實例化,是使用函數表示法,可以把類對象看做是會返回一個新的類實例的函數。這就是可變對象作為類變量時的特性。類變量是所有類的實例共享的屬性和方法,實例變量是每個實例獨有的數據。 Python是面向對象的高級編程語言,在Python里面一切都是對象:數字、字符串、元組、列表、字典、集合等內置數據類型,以及函數、方法、類、模塊...

    fish 評論0 收藏0
  • 【數據科學系統學習】Python # 編程基礎[三]

    摘要:新的稱為子類,而被繼承的稱為基類父類或超類。繼承最大的好處是子類獲得了父類的全部功能。在繼承關系中,如果一個實例的數據類型是某個子類,那它的數據類型也可以被看做是父類。 在上一篇中我們介紹了模塊和數據結構,這一篇將介紹面向對象編程。 面向對象編程 面向對象編程——Object Oriented Programming,簡稱 OOP,是一種程序設計思想。OOP 把對象作為程序的基本單元...

    molyzzx 評論0 收藏0
  • Python方法(二) - 類與繼承

    摘要:在類內部的方法中使用時。類的私有方法兩個下劃線開頭,聲明該方法為私有方法,不能在類地外部調用。先在本類中查找調用的方法,找不到才去基類中找。如果在繼承元組中列了一個以上的類,那么它就被稱作多重繼承。 類定義 類對象:創建一個類之后,可以通過類名訪問、改變其屬性、方法 實例對象:類實例化后,可以使用其屬性,可以動態的為實例對象添加屬性(類似javascript)而不影響類對象。 類...

    DevWiki 評論0 收藏0
  • Python基礎之接口——從協議到抽象基類

    摘要:本文重點協議是中非正式的接口了解抽象基類的基本概念以及標準庫中的抽象基類掌握抽象基類的使用方法。三抽象基類的使用通過繼承聲明抽象基類聲明抽象基類最簡單的方式是繼承或其他抽象基類注意在之間,繼承抽象基類的語法是。 導語:本文章記錄了本人在學習Python基礎之面向對象篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本文重點: 1、協議是Python中非正式的接...

    TwIStOy 評論0 收藏0
  • [譯] Python 學習 —— __init__() 方法 4

    摘要:同時,有多個類級別的靜態構造函數的方法。這個累贅,無論如何,是被傳遞到每個單獨的對象構造函數表達式中。我們可能只有幾個特定的擔憂,提供額外關鍵字參數給構造函數。 注:原書作者 Steven F. Lott,原書名為 Mastering Object-oriented Python 沒有__init__()的無狀態對象 下面這個示例,是一個簡化去掉了__init__()的類。這是一個常見...

    yvonne 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<