博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象2
阅读量:5361 次
发布时间:2019-06-15

本文共 3137 字,大约阅读时间需要 10 分钟。

一 面向对象的成员

1 面向对象的成员有三类:变量(字段),方法,属性

 变量:实例变量(字段):公有实例变量,私有实例变量

              类变量(静态字段):公有类变量,私有类变量

1 class Foo: 2       country='中国'           类变量(静态字段) 直接通过类访问Foo.country 3       def __init__(self,name):       4              self.name=name      实例变量(字段) 5        def func(self): 6  7 obj1=Foo('汪峰') 8 obj2=Foo('章子怡') 9 10 Foo.country11 12 13 类变量可以通过对象调用 也可以用类调用14 15 16 准则:实例变量(字段)访问时,使用对象访问:obj1.name17          类变量(静态字段)访问时,用类方法,即:Foo.country(实在不方便时,才使用对象访问)18 19 print(obj1.name)20 print(Foo.country)
变量

2 什么时候用类变量?

当所有对象中有共同字段时且要改都改要删都删,可以将实例变量(字段)提取到类变量(静态字段)

3 公有与私有

公有的可以内部调用 也可以外部调用

私有的只要在前面加上__就变成私有的

1 私有的实例变量(私有字段) 2 class Foo: 3        def __init__(self,name): 4            #self.name=name    公有的 5              self.__name=name   私有实例变量(私有字段) 6              self.age=12 7         def func(self): 8                print(self.__name)   内部可以访问私有的 9 10 obj=Foo('哈哈')11 print(obj.age)12 obj.__name  #无法访问13 obj.func()    找一个内部人员:func,让func帮助你执行内部私有__name   14 15 16 17 类变量(静态字段)18 class Foo:19         country='中国'    #把country='中国'  改为__country='中国'   变成私有的20         def func(self):21            #内部调用22               print(self.coutry)   >>  self.__country23               print(Foo.country)   #推荐使用类方法访问类变量    >>  Foo.__country24  #外部调用25 print(Foo.country)     #改为私有后外部不能调用26 27 obj=Foo()28 obj.func()
公有与私有

方法:(1)实例方法   (2)静态方法 (3)类方法

方法中也有公有和私有之分(成员修饰符)

1 1 实例化方法 2 class Foo(object): 3         def __init__(self,name): 4                 self.name=name 5          def func(self):   >>实例方法   self是对象 6                  print(self.name) 7 obj=Foo() 8 obj.func() 9                  10 11 12 13 2 静态方法14 class Foo(object):15         def __init__(self,name):16                 self.name=name   实例化对象17 18          >>实例方法(至少有一个参数如self)19          def func(self):   20                  print(self.name)21 22          @staticmethod     >>静态方法(可以通过类调用和对象调用 推荐使用类调用) 可传参23          def display():24                  print('666')25 26 27 obj.display()28 Foo.display()29 30 31 32 静态方法:如果方法中无需使用对象中封装的值,则使用静态方法33                  34 总结:1 编写时:方法上方写@staticmethod  方法的参数可有可无35          2 调用时,直接使用类.方法名() (推荐使用)   也可以使用对象调用  对象》方法名()36          3 什么时候写静态方法37              如果方法中无需使用对象中封装的值,则使用静态方法38 39 40 41 3 类方法42 class Foo(object):43 44           @classmethod         类方法    至少有一个参数cls 也可以加参数45          def show(cls,x1,x2)46                   print(cls,'111')   cls 传递的是当前类   cls是类    47 48  Foo.show(1,8)    49 50 结果 :class '__main__'.Foo> 1  851 52 53 54 总结:1 类方法定义时:方法上方写:@classmethod  55                                 方法的参数:至少有一个cls参数56          2 执行时:57                     类名.方法名()  默认会将当前类传递到参数中58          3 什么时候用?59                       如果在方法中会使用到当前类就可以使用类方法       60 61 62
方法

 

属性 :通过方法改造出来的

1 class Foo(object): 2         def __init__(self): 3               pass 4        @property    >>属性 5         def start(self):      只能有一个self  后面不能在加参数 6               return 1 7        @property 8         def end(self): 9                return 1010 obj=Foo()11 obj.start    不需要加括号  12 obj.end13 14 15 结果: 116           1017 18 19 编写时:方法上方写@property20 调用时无需加括号   直接写对象.方法21 应用场景:对于简单的方法,当无需传参时且有返回值
属性

 

转载于:https://www.cnblogs.com/mlhz/p/9549941.html

你可能感兴趣的文章
CentOS 6.5下Git服务器搭建
查看>>
关于我
查看>>
[吐槽]webpack4
查看>>
hibernate 配置Set排序
查看>>
js input输入框的总结
查看>>
SQL Server 2005、2008 的 datetime 值范围(转)
查看>>
CSS技巧(一):清除浮动
查看>>
第一篇博客,想说的话
查看>>
在线文档预览方案-office web apps
查看>>
mvc中异常页面的设置
查看>>
为什么QQ空间和QQ邮箱都是IE默认打开?
查看>>
Ajax的初步认识
查看>>
ip地址查询接口
查看>>
移动端页面触摸滑动
查看>>
CSS3-----transform 转换
查看>>
ASP.NET服务器控件OnClientClick事件中Eval()作为js方法的参数的一种写法
查看>>
[LUOGU1868] 饥饿的奶牛 - dp二分
查看>>
HDU 1015 Safecracker DFS
查看>>
Linux环境thinkphp配置以及数据源驱动改动
查看>>
Qt Quick 简单介绍
查看>>