类的成员和嵌套(建模)

一. 类的成员共分为三类: 字段, 方法, 属性

class Foo:

    country = ‘中国‘       # 静态字段

    def __init__(self, name):
        self.name = name          # 普通字段

    def func(self):             # 普通方法, 至少有一个self参数
        pass

    @staticmethod               # 静态方法, 无默认参数
    def func2():
        pass

    @classmethod                # 类方法, 至少有一个cls参数
    def func3(cls):
        pass

    @property                   # 属性
    def func4(self):
        pass

  

一. 字段: 静态字段, 普通字段

通过类创建对象时,如果每个对象都具有相同的字段,那么就使用静态字段

静态字段访问方法

静态字段属于类, 静态字段通过类访问, 静态字段在内存中只保存一份

print(Foo.country)

普通字段访问方法

普通字段属于对象, 普通字段需要通过对象来访问, 普通字段在每个对象中都要保存一份

obj = Foo(‘123‘)

print(obj.name)

二. 方法: 普通方法, 静态方法, 类方法

三种方法在内存中都归属于类, 区别在于调用方式不同

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

obj = Foo(‘1232‘)

obj.func()

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

Foo.func3()

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

Foo.func2()

相同点: 对于所有的方法而言, 均属于类(非对象)中, 所以, 在内存中也只保存一份

不同点: 方法调用者不同, 调用方法时自动传入的参数不同

三. 属性

定义时, 在普通方法的基础上添加 @property 装饰器, 属性仅有一个self参数

调用时, 无需括号, 这样节省时间

对于简单的方法, 当无需传参且有返回值时, 可以使用 @property

obj = Foo(‘1232‘)

obj.func4

四, 字段, 方法, 属性都有私有和公有, 需要在前面加上__, 例如def __func(): pass __country = ‘China‘

私有字段, 方法, 属性在调用时, 一般情况下都无法访问, 需要在类中访问

在继承时, 子类无法查看父类的私有字段, 方法, 属性

对于简单的方法, 当无需传参且有返回值时, 可以使用 @ property

五. 嵌套

class People(object):
    def __init__(self, name, address):
        self.name = name
        self.address = address

    def play(self):
        print(‘玩‘)

obj1 = People(‘企稳‘, ‘1000000‘)
obj2 = People(‘戊二醛‘, ‘1010000‘)

class Province(object):
    def __init__(self, name, location):
        self.name = name
        self.location = location
        self.people= None

p1 = Province(‘江苏‘, ‘china‘)
p2 = Province(‘北京‘, ‘china‘)

p1.people = obj1
p2.people = obj2

print(p1.people.name)
print(p1.people.address)
print(p1.name)
print(p1.location)
p1.people.play()

  

原文地址:https://www.cnblogs.com/NachoLau/p/9550576.html

时间: 2024-11-13 03:00:02

类的成员和嵌套(建模)的相关文章

面向对象---成员,嵌套(建模)

上一篇面向对象文字介绍了面向对象基本知识: ①面向对象是一种编程方式,此编程方式的实现是基于类和对象的使用 ②类是一个模板,模板中包装了多个'函数'供使用(可以讲多函数中公用的变量封装到对象中) ③对象,根据模板创建的实例(即:对象),实例中用于调用被包装(封装)在类中的函数 ④面向对象的三大特性:封装,继承和多态 本片讲介绍python类的成员,以及成员修饰符,类的特殊成员 类的成员                                                       

第13条:使类和成员的可访问性最小化

区别设计良好的模块和设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节.设计良好的模块会隐藏所有的实现细节,把它的API于它的实现清晰地隔离开来.然后,模块之间通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况,这个概念称为信息隐藏或封装.使类和成员的可访问性最小化可以有效的解除系统中各个模块的耦合度.实现每个模块的独立开发.使得系统更加的可维护,更加的健壮.对于顶层的(非嵌套的)类和接口,只有两种可能的访问级别,包级私有的和公有的

13 使类和成员的可访问性最小化

要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节.设计良好的模块会隐藏所有的实现细节,把它的API与它的实现清晰地隔离开来. 信息隐藏之所以非常重要有许多原因,其中大多数理由都源于这样一个事实:它可以有效的解除组成系统的各个模块之间的耦合关系,使得这些模块可以独立地开发.测试.优化.使用.理解和修改. 第一个规则很简单:尽可能地使每个类或者成员不被外界访问. 对于顶层的(非嵌套)的类和接口,只有两种可能的访问级别:包级私有的

使类和成员的可访问性最小化

本文涉及到的概念 1.使类和成员的可访问性最低的意义 2.类和成员的几种可访问性 3.其它注意事项 4.最后的原则 1.使类和成员的可访问性最低的意义 信息隐藏(information hiding),封装(encapsulation)的概念 一个模块对外部模块隐藏其内部数据和其他实现细节,也就是将它对外提供的API与它的实现细节清晰地隔离开来,它与其他模块的只通过API进行通信,其他模块不需要知道该模块内部的工作情况. 使用类和成员的可访问性最低的意义 a.可访问性越低,一个类对外暴露的信息就

《Effective Java 第二版》学习笔记 第13条 使类和成员的可访问性最小化

第四章 类和接口 第13条 使类和成员的可访问性最小化 1.设计良好的模块会隐藏所有的实现细节,把它的API与实现清晰的隔离开来,模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况:即信息隐藏或封装,是软件设计的基本原则之一. 2.Java提供了许多机制来协助信息隐藏.访问控制(access control)机制决定了类.接口和成员的可访问性(accessibility). 3.第一规则:尽可能地使每个类或者成员不被外界访问.或者说在保证功能的情况下,使用最小的访问级别

[.net 面向对象编程基础] (9) 类的成员(字段、属性、方法)

[.net 面向对象编程基础] (9) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态成员(static)和非静态成员 b.静态成员用static标识,不标识则默认为非静态成员 c.静态成员属于类所有,动态成员则属于实例所有,即对象 d.静态成员为类所有实例共享,无论类有多少实例或副本,静态成员只占用存中一块区域.非静态成员则在类的每个实例,都创建一个内存域. 下面主要说明一下类的主要

类中定义的嵌套结构,有什么作用?

class A { struct B; class C { .......... } B* b; public: void f(); void g(); }; 第一是命名空间的问题,在类里面定义的类或者结构不怕重名,比如说模板类每个类都有个iterator嵌套类,重名也不要紧,更大的好处是还可以利用这个特性写模板函数: template<class T, class Func> void foreach(T& container, Func f) { for(T::iterator i

Effective Java 第三版——15. 使类和成员的可访问性最小化

Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 类和接口是Java编程语言的核心.它们是抽象的基本单位.该语言提供了许多强大的元素,可以使用它们来设计类和接口.本章包含指导原则,帮助你充分利用这些元素,使你的类和接口是可

06-JAVA类及成员的修饰符

类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. final,将一个类生命为最终(即非继承类),表示他不能被其他类继承. friendly,默认的修饰符,只有在相同包中的对象才能使用这样的类. 成员变量修饰符: public(公共访问控制符),指定该变量为公共的,他可以被任何对象的方法访问. private(私有访问控制符)指定该变量只允许自己的类的方法