广告
返回顶部
首页 > 资讯 > 后端开发 > Python >面向对象之类的成员,嵌套
  • 735
分享到

面向对象之类的成员,嵌套

嵌套面向对象成员 2023-01-30 22:01:30 735人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

类的成员可分为三大类:字段丶方法和属性   字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同.   普通字段属于对象   静态字段属于类 class Foo: #类变量(静态字段)

类的成员可分为三大类:字段丶方法和属性

  字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同.

  普通字段属于对象

  静态字段属于类

class Foo:
    #类变量(静态字段)
    country = "你好"

    def __init__(self,name):
        # 实例变量(普通字段)
        self.name = name
    def too(self):
        print("===========")

#直接访问普通字段
obj = Foo("李白")
obj.too()
#直接访问静态字段
print(Foo.country)

 

  由上述代码可以看出[普通字段需要通过对象来访问] [静态字段通过类访问],在使用上可以看出普通字段和静态字段的归属是不同的,其在内容的存储方式也不一样,静态字段在内存中只保存一份,普通字段在每个对象中都要保存一份

  上面我们看到的两种字段都是公有字段,下面为私有字段

class Foo:
    #类变量(静态字段)
    country = "你好"
    #私有类变量(静态字段)
    __ctorens = "再见"

    def __init__(self,name,phone):
        # 实例变量(普通字段)
        self.name = name
        #私有示例变量(普通字段)
        self.__phone = phone
    def too(self):
        print(Foo.__ctorens)

#直接访问普通字段
obj = Foo("李白","165136851546")
obj.too()
#直接访问静态字段
print(Foo.country)
#在类外面是没法访问类中的私有字段的,所以这里会报错
print(Foo.ctorens)

 

  方法包括普通方法丶静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同

   1.普通方法:由对象调用,至少一个self参数,执行普通方法时,自动将调用该方法的对象赋值给self

   2.类方法:由类调用,至少一个cls参数,执行类方法时,自动将调用该方法的类赋值给cls

   3.静态方法:由类调用,无默认参数

# 实例方法
class Foo:
    def __init__(self,name):
        self.name = name
    #实例方法
    def tom(self):
        pass
obj = Foo("XX")
obj.tom()

#静态方法
#在方法前面加@staticmethod,方法名中的self也不用写了,可以写任何参数,调用直接用  类名.方法名(参数) 调用
class Foo:
    def __init__(self,name):
        self.name = name
    #静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法
    @staticmethod
    def tom(a,b):
        print(a,b)
Foo.tom(1,2)

# 类方法
#在方法前面加上@claSSMethod,方法名中参数必须有cls,cls是指类
class Foo:
    def __init__(self,name):
        self.name = name

    def show1(self):
        print(self)
    # 类方法
    @classmethod
    def show(cls,a,b):
        print(cls,a,b)  #<class '__main__.Foo'> 1 2
Foo.show(1,2)

  方法跟字段一样,也分为私有跟公有,私有就是在方法名前面加上__,调用是不能在类外面直接调用,需要调用类中的一个公有方法,再在公有方法里调用私有方法

class Foo:
    def __init__(self,name):
        self.name = name

    def show1(self):
        Foo.__show(1,2)
    # 私有类方法
    @classmethod
    def __show(cls,a,b):
        print(cls,a,b)  #<class '__main__.Foo'> 1 2

obj = Foo("XX")
obj.show1()

 

 

  属性的定义时就是在普通方法的基础上添加@property装饰器,属性仅有一个self参数,调用时无需括号

 

class Foo(object):
    def __init__(self):
        pass
    #属性在方法名前面加上@property
    @property  
    def start(self):
        return 1

obj = Foo()
print(obj.start)    #无需加括号,直接调用

 

 

  两个类中的变量互相建立关系就叫嵌套

class School:
    def __init__(self,name):
        self.name = name
obj = School("舞蹈教室")
obj1 = School("音乐教室")
obj2 = School("美术教室")


class Teacher:
    def __init__(self,name):
        self.name = name
t = Teacher("舞蹈老师")
t1 = Teacher("音乐老师")
t2 = Teacher("美术老师")

#############为老师分配教室
t.School = obj
t1.School = obj1
t2.School = obj2
############查看t1老师所在的教室
print(t1.School.name)

 

--结束END--

本文标题: 面向对象之类的成员,嵌套

本文链接: https://www.lsjlt.com/news/179401.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 面向对象之类的成员,嵌套
    类的成员可分为三大类:字段丶方法和属性   字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同.   普通字段属于对象   静态字段属于类 class Foo: #类变量(静态字段)...
    99+
    2023-01-30
    嵌套 面向对象 成员
  • python面向对象之类成员
    一、概述       上篇《python面向对象OOP》介绍了python面向对象的基础初级入门部分,提到了类的定义,使用,类的三大特性;经典类,新式类在查找时的区别等,有了前面的基础,本文接着描述面向对象中类成员;先整体描述下,类中的成员...
    99+
    2023-01-31
    面向对象 成员 python
  • python之成员(面向对象)
    1. 成员   在类中你能写的所有内容都是类的成员    class Person: def __init__(self, name, gender): self.name = name # 成员...
    99+
    2023-01-30
    面向对象 成员 python
  • python 面向对象(成员)
    1. 成员     在类中你能写的所有内容都是类的成员 2. 变量     1. 实例变量: 由对象去访问的变量. class Person: def __init__(self, name, id, gender, birth...
    99+
    2023-01-30
    面向对象 成员 python
  • Python面向对象进阶及类成员
    再次了解多继承先来一段代码#!/usr/bin/env python# _*_ coding:utf-8 _*_class A:    def bar(self):        print("BAR")        self.f1()c...
    99+
    2023-01-31
    进阶 面向对象 成员
  • Python面向对象(成员)(二)
    1. 成员     在类中你能写的所有内容都是类的成员 2. 变量     1. 实例变量: 由对象去访问的变量. class Person: def __init__(self, name, id, gender, bi...
    99+
    2023-01-30
    面向对象 成员 Python
  • Python面向对象特殊成员
    类的特殊成员之call #!/usr/bin/env python # _*_coding:utf-8 _*_ class SpecialMembers: # 类的构造方法 def __init...
    99+
    2022-06-04
    面向对象 成员 Python
  • Python面向对象之成员相关知识总结
    一、成员  1.1 变量 实例变量,属于对象,每个对象中各自维护自己的数据。 类变量,属于类,可以被所有对象共享,一般用于给对象提供公共数据(类似于全局变...
    99+
    2022-11-12
  • Python面向对象之类和对象
    目录类定义类定义类和属性类中方法对象方法(普通方法)类方法静态方法魔术方法对象创建对象对象属性总结 类 定义类 所有类名首字母要求大写,多个单词时遵循驼峰命名法 所...
    99+
    2022-11-12
  • Java 面向对象 之 抽象类 abstract
    转载于 : http://www.verejava.com/id=16992804621647 public class TestAbstract {public static&n...
    99+
    2023-06-02
  • Python面向对象之入门类和对象
    目录什么是面向对象编程?定义类,从具体代码来感受吧!多个类和对象的观察补充一下类的属性(数据部分)总结什么是面向对象编程? 我们是不是听过面向过程,拿来放在一起对比就比较好理解了。 ...
    99+
    2022-11-12
  • 面向对象之套接字(socket)和黏包
      tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端   基于UDP协议的socket   server端: import socket udp_sk = socket.socket(type=socket.SOCK...
    99+
    2023-01-30
    面向对象 socket
  • python 面向对象之类的继承
    python中什么是继承:新类不必从头编写新类从现有的类继承,就自动拥有了现有类的所有功能新类只需要编写现有类缺少的新功能继承的好处:复用已有代码自动拥有了现有类的所有功能只需要编写缺少的新功能继承的特点:子类和父类是is关系python继...
    99+
    2023-01-30
    面向对象 python
  • python 面向对象之类方法
    类方法通过@classmethod装饰器实现,类方法和普通方法的区别是, 类方法只能访问类变量,不能访问实例变量举个例子class Dog(object):     def __i...
    99+
    2023-01-30
    面向对象 方法 python
  • Python入门之面向对象和类
    目录一、两大编程思想二、类与对象三、定义Python中的类四、对象创建五、类属性、类方法、静态方法六、动态绑定属性和方法七、面向对象的三大特征八、方法重写总结一、两大编程思想 二、...
    99+
    2022-11-12
  • Javascript中面向对象程序设计对象成员的示例分析
    小编给大家分享一下Javascript中面向对象程序设计对象成员的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!序:刚接...
    99+
    2022-10-19
  • python面向对象之类的继承详解
    目录一、概述 二、类的继承2.1 继承的定义2.2 构造函数的继承 2.3 子类对父类方法的重写三、类继承的事例一、概述  面向对象编程 (OOP) 语言的一个主要功能就是“继承”。...
    99+
    2022-11-12
  • Python面向对象编程之类的概念
    目录1、面向对象基本概念1.1 万物皆对象1.2 面向对象编程1.3 面向对象的特征2、Python面向对象的术语3、Python类的构建3.1 类的基本构建 3.2 类的构造函数3...
    99+
    2022-11-12
  • Python面向对象编程之类的封装
    目录1、封装的理解2、私有类属性、公开类属性、私有实例属性和公开实例属性2.1 公开类属性2.2 私有类属性2.3 公开实例属性2.4 私有实例属性2.5 私有属性不一定真的私有3、...
    99+
    2022-11-12
  • Python面向对象编程之类的继承
    目录1、对继承的理解2、类继承的构建3、Python中最基础的类4、ython类的重载4.1 属性重载4.2 方法重载5、类的多继承1、对继承的理解 继承(Inheritance) ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作