Python学习 :面向对象 -- 类的成员

类的成员

一、字段

- 字段可以分为‘普通字段‘和‘静态字段‘两种

- 普通字段(保存在对象中,执行时只能通过对象来进行访问)

- 静态字段(保存在类中,在内存中只保存一份数据(可以有效地节约内存的空间),执行时可以通过对象来访问,也可以通过类来访问)

class Province:
    country = ‘中国‘  # 静态字段

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

    def show(self):  # 方法
        print(self.name)

Beijing = Province(‘北京‘)
Shanghai= Province(‘上海‘)
print(Beijing.name, Province.country)  # 通过类来访问静态对象country
print(Shanghai.name,Shanghai.country)  # 通过对象来访问静态对象country
===>北京 中国
===>上海 中国

二、方法

- 方法可以分为三种‘普通方法‘、‘静态方法‘以及‘类方法‘三种

- 普通方法,保存在类中,通过对象来调用,self参数为对象

- 静态方法,保存在类中,通过类来直接调用

静态方法的特殊之处:1、self 参数不再是必须的

            2、在方法前加上装饰器 @staticmethod

            3、也可以传入对应的参数

- 类方法,    保存在类中,通过类来直接调用,cls参数为类

类方法的特殊之处:    1、需要参数,一般使用为 cls

             2、在方法前加上装饰器 @classmethod

应用场景:

- 当对象中需要保存值,调用方法时需要使用对象中的值,此时使用普通方法更为合适

- 当不需要任何对象中的值时,使用静态方法或类方法比较合适

class Method:
    # 普通方法
    def nml(self):
        print(‘普通方法‘)

    # 静态方法
    @staticmethod
    def stm():
        print(‘静态方法‘)

    # 类方法
    @classmethod
    def cls(cls):
        # 一般在类方法中的参数为cls ,cls 是类名
        print(‘类方法‘)

Method.stm()
Method.cls()
===>静态方法
===>类方法

三、属性(特性)

属性,保存在类中

class Info:
    @property
    def med1(self):
        print(‘med1‘)

    def med2(self):
        print(‘med2‘)
    def med3(self,v):
        print(v)
    def med4(self):
        print(‘med4‘)

    per = property(fget=med2,fset=med3,fdel=med4)

obj = Info()
obj.med1
ret = obj.per       # fget的访问方式
obj.per = ‘med3‘    # fset的访问方式
del obj.per         # fdel的访问方式
===>med1
===>med2
===>med3
===>med4

原文地址:https://www.cnblogs.com/ArticleYeung/p/10460401.html

时间: 2024-10-05 06:55:48

Python学习 :面向对象 -- 类的成员的相关文章

Python学习—面向对象学习下

面向对象下 1.构造方法与析构方法 class People(object): # 构造方法:__init__(),在实例化对象时自动执行的方法 def __init__(self, name, age): self.name = name self.age = age print("创建对象成功.......") # 析构函数:__del__(), 当你删除对象时,自动调用的方法 # 删除对象:del 对象名 def __del__(self): print("删除对象成功

Java面向对象——类的成员

Java面向对象——类的成员 摘要:本文主要介绍了类的常见成员. 属性 属性称为成员变量,一般来讲不用赋值,因为有默认值,另外显式赋值没有意义会导致所有由此类创建对象都是此值. 默认值 Boolean类型成员变量的默认值是false. Int类型成员变量的默认值是0. Double类型成员变量的默认值是0.0. String类型成员变量的默认值是null. Char类型成员变量的默认值是\u0000. 类变量 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外

python学习-面向对象2

类的成员 类的成员可以分为三大类:字段.方法和属性 所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的多少,在内存中只创建一份. 一.字段 字段包含静态字段和普通字段,静态字段属于类,普通字段属于对象 class School(object): # 静态字段 munbers = 0 def __init__(self, name): # 普通字段 self.name = name # 通过对象访问普通字

【Python】面向对象--类的特殊成员方法

类的特殊成员方法 1. __doc__ 表示类的描述信息 class Func(object): '''__doc__方法是用来打印类的描述信息''' def tell(self): pass def enroll(self): pass print(Func.__doc__) # 输出:类的描述信息运行结果如下:__doc__方法是用来打印类的描述信息 __doc__是用来打印类的描述信息.就是类的注释.     2.__module__和__class__ __module__表示当前操作的

Python进阶编程 类的成员

类的成员 class A: company_name='老男孩' #静态变量 __iphone='1515151' #私有静态变量 def __init__(self,name,age): #特殊方法(双下方法) self.name=name #对象属性 self.__age=age #私有对象属性 def func(self): #普通方法 pass def __func(self): #私有方法 pass @classmethod def func1(cls): #类方法 '''定义类方法

【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

. 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定义 (1) 接口部分定义格式 接口部分定义格式 : @interface className : superClassName { type _variableName; ... ... } - (type) methodName : type parameterName; @end -- 接口定义

python学习19类5之多态与鸭子模型

'''''''''一.多态1.Python中多态是指一类事物有多种形态.''' class Animal: def run(self): raise AttributeError('子类必须实现这个方法') #抛出异常 class People(Animal): def run(self): print('人正在走') class Pig(Animal): def run(self): print('pig is walking') class Dog(Animal): def run(self

Python学习---面向对象的学习[深入]

类的深入学习    a. Python中一切事物都是对象     b. class Foo:             pass                obj = Foo()         # obj是对象,Foo类         # Foo类也是一个对象,type的对象     c. 类都是type类的对象   type(..)       "对象"都是以类的对象 类()     d. 类实际上是type类型的对象,所有的类都是Object的子类 创建类的方法[2种] #

python学习笔记-类的descriptor

descriptor应用背景 所谓描述器,是实现了描述符协议,即get, set, 和 delete方法的对象. 简单说,描述符就是可以重复使用的属性. 比如以下代码: f = Foo() b = f.bar f.bar = c del f.bar 在解释器执行上述代码时,当发现你试图访问属性(b = f.bar).对属性赋值(f.bar = c)或者删除一个实例变量的属性(del f.bar)时,就会去调用自定义的方法. 为什么把对函数的调用伪装成对属性的访问?有什么好处? 从property