1、类的成员? 变量、方法、属性

 class Foo:

     # 方法
def __init__(self,name):
# 实例变量/字段
self.name = name # 方法
def func(self):
pass # obj,Foo类的对象
# obj,Foo类的实例
obj = Foo('朱奎峰')

  变量:1、实例变量(字段)

        2、类变量(静态字段)

 实例一:
class Foo:
# 类变量(静态字段)
country = "中国" def __init__(self,name):
# 实例变量(字段)
self.name = name def func(self):
pass obj1 = Foo('季红')
obj2 = Foo('王晓东') Foo.country 思考题: 如何验证儿子都不知道私有字段的存在. 无法访问:
class Base(object):
__secret = "受贿" class Foo(Base): def func(self):
print(self.__secret)
print(Foo.__secret) obj = Foo()
obj.func() 可以访问:
class Base(object):
__secret = "受贿" def zt(self):
print(Base.__secret) class Foo(Base): def func(self):
print(self.__secret)
print(Foo.__secret) obj = Foo()
obj.zt()

实例

  方法:1、实例方法

       2、静态方法

       3、类方法    @classmethod

 - 实例方法
class Foo(object):
def __init__(self, name):
self.name = name # 实例方法
def func(self):
print(self.name) obj = Foo('..')
obj.func() - 静态方法
class Foo(object):
def __init__(self, name):
self.name = name # 静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法
@staticmethod
def display(a1,a2):
return a1 + a2
Foo.display(1,3) - 类方法
class Foo(object): # 类方法,cls是类
@classmethod
def show(cls,x1,x2):
print(cls,x1,x2) # 执行类方法
Foo.show(1,8) 面试题: 静态方法/类方法和实例方法的区别? 属性(通过方法改造出来):
示例:
class Foo(object):
def __init__(self):
pass @property
def start(self):
return 1 @property
def end(self):
return 10 obj = Foo()
print(obj.start)
print(obj.end)
"""
# 总结:
# 1. 编写时
# - 方法上方写 @property
# - 方法参数:只有一个self
# 2. 调用时:无需加括号 对象.方法
# 3. 应用场景: 对于简单的方法,当无需传参且有返回值时,可以使用 @property
"""
@staticmethod  静态方法 ,如果方法无需使用对象中封装的值,那么就可以使用静态方法@staticmethod,放在定义的函数前面
def display(a1,a2):   

  

  属性: 通过方法改造出来

 class Foo(object):
def __init__(self):
pass @property
def start(self):
return 1 @property
def end(self):
return 10 obj = Foo()
print(obj.start)
print(obj.end)
"""
# 总结:
# 1. 编写时
# - 方法上方写 @property
# - 方法参数:只有一个self
# 2. 调用时:无需加括号 对象.方法
# 3. 应用场景: 对于简单的方法,当无需传参且有返回值时,可以使用 @property
"""

2、静态方法、类方法和实例方法的区别?

  定义 静态方法、类方法定义的时候需要添加@   ,实例方法不需要添加
  执行 静态方法、类方法执行时通过类. 可以直接调用,  实例方法 先实例化,然后通过对象. 调用
  应用场景?
    如果在方法内部不会用到对象相关的数据时,就可以用静态 和类
    如果需要用到对象 用实例方法
    如果在代码中会用到当前类,为了省事可以用类方法

3、属性:

属性总结

嵌套

 面向对象:
"""
创建三个学校且三个学校的设施内容等都是一致.
""" class School(object):
def __init__(self, name, address):
self.name = name
self.address = address def speech(self):
print('讲课') obj1 = School('老男孩北京校区', '美丽富饶的沙河')
obj2 = School('老男孩上海校区', '浦东新区')
obj3 = School('老男孩深圳校区', '南山区')
class Teacher(object):
def __init__(self, name, age, salary):
self.name = name
self.age = age
self.__salary = salary
self.school = None t1 = Teacher('李杰', 19, 188888)
t2 = Teacher('艳涛', 18, 60)
t3 = Teacher('女神',16, 900000)
# ############## 老师分配校区
t1.school = obj1
t2.school = obj1
t3.school = obj2
# ####################################
# 查看t1老师,所在的校区名称/地址
print(t1.school.name)
print(t1.school.address)
print(t1.name)
print(t1.age)
t1.school.speech() 准则: 字段和方法的归类. 以前:
[
{"name":'alex1','age':18,xxx:999},
{"name":'alex2',age':18},
]

day 23 面向对象中类的成员 和嵌套的更多相关文章

  1. 文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式

    本节主要内容: 1.面向对象中的成员 2.成员修饰符 3.特殊成员 4.异常处理 5.设计模式之单例模式 一.面向对象中的成员(类的成员) 类的成员总共可以分为3大类,每类中有不同的分支. 1.总述, ...

  2. JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块

    JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...

  3. python全栈开发 * 23 面向对象 知识点汇总 * 180704

    23 面向对象 -----特殊方法 1. isinstance(obj,类名) 判断对象是否是此类实例化或者此类的子类实例化出来的class A:passclass B(A):passb1=B()pr ...

  4. C#中类的成员

    一.C#中类的成员 1. 类的成员 类中的数据和函数都称为类的成员.类的成员可以分为两类: ?类本身所声明的. ?从基类中继承来的. 如果在类声明中没有指定基类,则该类将继承System.Object ...

  5. Java面向对象——类的成员

    Java面向对象——类的成员 摘要:本文主要介绍了类的常见成员. 属性 属性称为成员变量,一般来讲不用赋值,因为有默认值,另外显式赋值没有意义会导致所有由此类创建对象都是此值. 默认值 Boolean ...

  6. Java基础语法(9)-面向对象之类的成员

    title: Java基础语法(9)-面向对象之类的成员 blog: CSDN data: Java学习路线及视频 1.面向对象特征--封装 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按 ...

  7. Python面向对象05 /私有成员、类方法、静态方法、属性、isinstance/issubclass

    Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/is ...

  8. C# 中类的成员有哪些?

    类(class)是C#类型中最基础的类型.类是一个数据结构,将状态(字段)和行为(方法和其他函数成员)组合在一个单元中.类提供了用于动态创建类实例的定义,也就是对象(object).类支持继承(inh ...

  9. python 面向对象和类成员和异常处理

    python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...

随机推荐

  1. 数据结构(三十二)图的遍历(DFS、BFS)

    图的遍历和树的遍历类似.图的遍历是指从图中的某个顶点出发,对图中的所有顶点访问且仅访问一次的过程.通常有两种遍历次序方案:深度优先遍历和广度优先遍历. 一.深度优先遍历 深度优先遍历(Depth_Fi ...

  2. Android 正则表达式,Pattern,Matcher基本使用

    Pattern类:      Pattern的创建:      Pattern pattern =Pattern.complie(String regex)     参数说明:regex:是一个正则表 ...

  3. Andriod Studio设置类默认签名模板

  4. Scrapy 之如何发送post请求

    import scrapy import json class PostSpider(scrapy.Spider): name = 'post' # allowed_domains = ['www.x ...

  5. 学习笔记63_python反射

    ####反射预备知识一########### __call__ 对象后面加括号,触发执行. python中,类的默认的内置方法,有一个名为__call__,如 class foo: def  __in ...

  6. P3067 [USACO12OPEN]平衡的奶牛群(折半暴搜)

    暴搜无疑.... 首先考虑纯暴搜...... 考虑每一个数: 选在左边集合 选在右边集合 不选 一共三种情况,用一个数组记录搜到的答案,所以暴搜是3^N的复杂度...直接死亡 于是讲折半暴搜.... ...

  7. CDQ分治(学习笔记)

    离线算法——CDQ分治 CDQ (SHY)显然是一个人的名字,陈丹琪(MM)(NOI2008金牌女选手). 从归并开始(这里并没有从逆序对开始,是想直接引入分治思想,而不是引入处理对象) 一个很简单的 ...

  8. 网页文件打包成.exe可执行文件

    网页文件不止可以通过浏览器打开,也可以通过打包程序打包成.exe桌面可执行程序,这样写的网页文件就可以像桌面应用一样打开了.方法如下: 工具:NW.js.Enigma Virtual Box.资源编辑 ...

  9. SSM学习成果总结,图书管理系统进行三层整合

    一:先看一下效果图 二:目录结构  三:pojo package com.zh.pojo; import lombok.AllArgsConstructor; import lombok.Data; ...

  10. html5自动弹出软键盘的方法

    html5自动弹出软键盘的方法<pre> <textarea placeholder="说点什么......" autofocus="autofocus ...