Python的这种设计是作者从Modula-3中借鉴来的,在后面使用的情况看来,这个设计也是比较成功的.我们对比Python和C++讨论一下这个问题: Modula-3是上世纪80年代末数字设备公司(DEC)系统研究中心(SRC)和Olivetti研究中心(ORC)设计的一门语言. 尽管这门语言没有在业界广泛的应用起来,但这么语言对后面被发明的Java, Python, Caml, C# 都产生了很多的影响 1.首先,调用的时候要求指定"this",让我们更明确的区分调用的是一个成员变…
http://cowboy.1988.blog.163.com/blog/static/75105798201091141521583/ 这篇文章总结的非常好 主要注意的地方是 1,在类内调用成员函数 要用类名调用,而且要传入self(非静态成员函数是实例相关的) 如: class Foo(object):     def bar(self):         print "bar!"     def spam(self):         bar(self)     # 错误,引发N…
  pickle是Python轻便的对象序列化工具.使用pickle可以方便地把python对象写入文件对象中,或者像soap那样在socket间传送.     按照python的一贯作风,类的成员在使用前不会分配和占用内存空间.这一点使用pickle可以看得很清楚.     例如有类矩形Rect   #文件Rect_Module.py  class Rect:      def __init__(self, a_width , a_height):          self.m_width…
首先原谅一个菜鸟叫他“两头下划线”.记得在windows编程中,很多宏定义使用下划线+大写,给人逼格很高的错觉.对于Python下划线的认识,大概是从__dict__这个属性开始的,看__dict__的名字,首先她是一个字典,key是类或对象的所有成员,value是成员对应的值.我们举个简单的例子说明单下划线,双下划线,两头下划线的区别. >>> class student(object): __name = 0 _sex = 'male' >>> student.__…
在java,c#类的成员修饰符包括,公有.私有.程序集可用的.受保护的. 对于python来说,只有两个成员修饰符:公有成员,私有成员 成员修饰符是来修饰谁呢?当然是修饰成员了.那么python类的成员包括什么呢? python成员: 字段,方法,属性 每个类成员的修饰符有两种: 公有成员:内部外部都能访问 私有成员:字段前面加两个_,比如:__cc,只有自己的类内部能访问,继承的父类,子类均不能访问. 一.私有成员: 只能类自己本身成员内部可以访问 1.修饰普通字段 字段前面加__ ,该字段就…
先来段小程序class Foo: name = "abc" def __init__(self,age): self.age = age print(Foo.name)Foo.name = "bcd"print(Foo.name) Foo.age = 18print(Foo.age) x = Foo(20)print(x.age)x.age = 25print(x.age) print(x.name)x.name = "cde"print(x.n…
类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式: 公有成员,在任何地方都能访问 私有成员,只有在类的内部才能方法 私有成员和公有成员的定义不同:私有成员命名时,前两个字符是下划线.(特殊成员除外,例如:__init__.__call__.__dict__等) class C: def __init__(self): self.name = '公有字段' self.__foo = "私有字段" 私有成员和公有成员的访问限制不同: 静态字段 公有静态字段:类…
self指向的是实例对象,作为第一个参数,使用时不需要传入此参数. class Student(object): #定义一个Student类, def __init__(self, name, score,age): self.name = name self.score = score self.age = age def print_score(self): #定义类方法,实例对象可调用 return self.name,self.score def get_grade(self): if…
python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial diameter),极直径(polar diameter)''' def __init__(self,name,eqDiameter,poDiameter): self.name=name self.eqDiameter=eqDiameter #赤道直径 self.poDiameter=poDiamet…
C#的类成员的定义和声明如下 using UnityEngine; using System.Collections; public class TestController : ECController { int a = b(); public static int test=10; static int g = gg(); public static TestController Instance = new TestController(); static int gg() { Debu…