“人生最尊貴的事是什么?”
人生最尊貴的事情就是面對別人的虛偽與不義,仍能保持自己對別人的親切!
要學會容忍人家,人家沒有修,人家是凡人,你是有修的人,你是一個圣人,你是假我,別把你當成真的。人的修養(yǎng)是靠什么讓人家來尊敬的?就是語言,行為。為什么叫修心修行,就是一個語言,一個行為,心里的行為。

總結:
- 每一次實例化都會產生完全不同的對象,內存地址相同只能當巧合,不能當真
- _init_ 方法中,默認必須是 return None
1.Python的類
class ClassName:
- 必須使用class關鍵字
- 類名必須是用大駝峰命名
- 類定義完成后,就產生了一個類對象,綁定到了標識符ClassName上
def add(x,y):
return x+y
class Person: # 類對象(非類的對象,注意區(qū)分)
pass
class MyClass:
"""A example class""" # #__doc__
x = 'abc' # 類屬性
def foo(self): # 類屬性foo,也是方法(看做函數(shù))
# 本質上 x foo 都是類屬性
return 'My Class'
print(MyClass.x)
print(MyClass.foo)
print(MyClass.__doc__)
#-------------------------------------------------
abc
<function MyClass.foo at 0x000002406FCCD048>
A example class
總結:
1. 方法是可以加 括號 調用的,
2.類對象及類屬性和方法
類對象,類的定義就會生成一個類對象
類的屬性,類定義中的變量和類中定義的方法都是類的屬性
類變量,上例中x是類MyClass的變量
類的私有屬性:雙下劃綫開頭,或但下滑線開頭;
MyClass中,x、foo都是類的屬性, doc 也是類的屬性foo方法是類的屬性,如同 吃 是人類的方法,但是每一個具體的人才能吃東西,也就是說 吃 是人的實例才能調用的方法。
foo是方法對象method,不是普通的函數(shù)對象functions了,它一般要求至少有一個參數(shù),第一個參數(shù)是self(self只是個慣用標識符,可以換名字),這個參數(shù)位置就留給了self。self 指代當前實例本身
類屬性與方法:
類的私有屬性
private_attrs:兩個下劃線開頭,聲明該屬性為私有,不能在類地外部被使用或直接訪問。在類內部的方法中使用時 self.private_attrs。類的方法
在類地內部,使用 def 關鍵字來定義一個方法,與一般函數(shù)定義不同,類方法必須包含參數(shù) self,且為第一個參數(shù),self 代表的是類的實例。
self 的名字并不是規(guī)定死的,也可以使用 this,但是最好還是按照約定是用 self。類的私有方法
private_method:兩個下劃線開頭,聲明該方法為私有方法,只能在類的內部調用 ,不能在類地外部調用。self.private_methods。
3.構造函數(shù)(初始化)
很多類都傾向于將對象創(chuàng)建為有初始狀態(tài)的。因此類可能會定義一個名為 init() 的特殊方法(構造方法),像下面這樣:
類定義了 init() 方法的話,類的實例化操作會自動調用 init() 方法。所以在下例中,可以這樣創(chuàng)建一個新的實例:
當然, init() 方法可以有參數(shù),參數(shù)通過 init() 傳遞到類的實例化操作上。例如:
類的實例化與初始化
self代表類的實例,而非類
實例化 Class()
每一次實例化只能生成該類的具體實例,
每一次實例化都會產生完全不同的對象,內存地址相同只能當巧合,不能當真
a = MyClass() # 實例化,相當于對類進行調用;
使用上面的語法,在類對象名稱后面加上一個括號,就調用類的實例化方法,完成實例化。
實例化就真正創(chuàng)建一個該類的對象(實例)。例如
tom = Person()
jerry = Person()
上面的tom、jerry都是Person類的實例,通過實例化生成了2個實例。
每次實例化后獲得的實例,是不同的實例,即使是使用同樣的參數(shù)實例化,也得到不一樣的對象。
Python類實例化后,會自動調用 init 方法。這個方法第一個參數(shù)必須留給self,其它參數(shù)隨意。(特殊方法)
初始化 _init_方法
MyClass()實際上調用的是 init(self) 方法,可以不定義,如果沒有定義會在實例化后隱式調用。
作用:對實例進行初始化
class MyClass:
def __init__(self):
print('init')
print(MyClass) # 不會調用
print(MyClass()) # 調用__init__
a = MyClass() # 調用__init__
print(a)
#-------------------------------------------------
<class '__main__.MyClass'>
init
<__main__.MyClass object at 0x000002406FCB8E10>
init
# 每一次的調用都不同;
class Person:
def __init__(self):
print('init',id(self))
print(Person) #不會調用
print('-'*30)
tom = Person() #實例化
print(tom,hex(id(tom)))
jerry = Person() # 調用init
print(jerry,hex(id(jerry)))
#----------------------------------------------------------------------------------------------------
<class '__main__.Person'>
------------------------------
init 2475813918872
<__main__.Person object at 0x0000024072025898> 0x24072025898
init 2475813859224
<__main__.Person object at 0x0000024072016F98> 0x24072016f98
#初始化 相當于 傳參數(shù);
class Person:
def __init__(self, name, age):
print('init',hex(id(self)))
self.name = name
self.age = age
print(Person)
tom = Person('Tom', 20) # 實例化,會調用__init__方法并為實例進行屬性的初始化
jerry = Person('Je', 25)
print(tom,jerry)
print(tom.name,jerry.name)
print(tom.age,jerry.age)
#--------------------------------------------------
<class '__main__.Person'>
init 0x2407202a710
init 0x2407202a9b0
<__main__.Person object at 0x000002407202A710> <__main__.Person object at 0x000002407202A9B0>
Tom Je
20 25

