27.2-类定义和初始化

“人生最尊贵的事是什么?”
人生最尊贵的事情就是面对别人的虚伪与不义,仍能保持自己对别人的亲切!

要学会容忍人家,人家没有修,人家是凡人,你是有修的人,你是一个圣人,你是假我,别把你当成真的。人的修养是靠什么让人家来尊敬的?就是语言,行为。为什么叫修心修行,就是一个语言,一个行为,心里的行为。

总结:

  1. 每一次实例化都会产生完全不同的对象,内存地址相同只能当巧合,不能当真
  2. _init_ 方法中,默认必须是 return None

1.Python的类

class ClassName:

  1. 必须使用class关键字
  2. 类名必须是用大驼峰命名
  3. 类定义完成后,就产生了一个类对象,绑定到了标识符ClassName上
def add(x,y):
    return x+y

class Person:   # 类对象(非类的对象,注意区分)
    pass


class MyClass:
  """A example class"""    # #__doc__
  x = 'abc' # 类属性
  def foo(self): # 类属性foo,也是方法(看做函数)
# 本质上 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,不是普通的函数对象functions了,它一般要求至少有一个参数,第一个参数是self(self只是个惯用标识符,可以换名字),这个参数位置就留给了self。

self 指代当前实例本身

类属性与方法:

类的私有属性
private_attrs:两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.private_attrs。

类的方法
在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。

类的私有方法
private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.private_methods。

3.构造函数(初始化)

  • 很多类都倾向于将对象创建为有初始状态的。因此类可能会定义一个名为 init() 的特殊方法(构造方法),像下面这样:


  • 类定义了 init() 方法的话,类的实例化操作会自动调用 init() 方法。所以在下例中,可以这样创建一个新的实例:


  • 当然, init() 方法可以有参数,参数通过 init() 传递到类的实例化操作上。例如:


类的实例化与初始化

self代表类的实例,而非类

实例化 Class()

每一次实例化只能生成该类的具体实例,
每一次实例化都会产生完全不同的对象,内存地址相同只能当巧合,不能当真

a = MyClass() # 实例化,相当于对类进行调用;

使用上面的语法,在类对象名称后面加上一个括号,就调用类的实例化方法,完成实例化。
实例化就真正创建一个该类的对象(实例)。例如

tom = Person()
jerry = Person()

上面的tom、jerry都是Person类的实例,通过实例化生成了2个实例。

每次实例化后获得的实例,是不同的实例,即使是使用同样的参数实例化,也得到不一样的对象。

Python类实例化后,会自动调用 init 方法。这个方法第一个参数必须留给self,其它参数随意。(特殊方法)

初始化 _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

#初始化 相当于 传参数;


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,745评论 2 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,094评论 1 32
  • 还来不及拥抱晨曦,就已经手握黄昏,一天匆匆而过; 还来不及细品春天的殷红窦绿,就已经满眼肃穆的银装素裹,一年匆匆而...
    万儿阅读 282评论 0 2
  • 陆羽(733年--804年),字鸿渐,一名疾,字季疵,号竟陵子、桑苎翁、东冈子,唐复州竟陵(今湖北天门)人。一生嗜...
    赛德传播阅读 1,695评论 0 0