Python类中的字段,方法,属性区别及StaticMethod, Property

  • 类包含下列

    • 静态属性
    • 动态属性
    • 静态方法
    • 动态方法
class Province:
    #静态字段--属于类,调用方法类.字段名
    memo = "中国23个省之一"

    #动态字段--属于对象,调用方式实例化对象.字段名
    def __init__(self, name, capital, leader):
        self.Name = name
        self.Capital = capital
        self.Leader = leader

    #动态方法--属于对象
    def sports_game(self):
        print(self.Name + '正在开运动会')

    #静态方法--属于类
    @staticmethod
    def Foo(): #去掉self参数, 静态方法属于类
        print('每个省要带头反腐')

    @property #把方法变成一个特性
    def Bar(self):
        print(self.Name)
        return 'something'

hb = Province('河北','石家庄','李阳') #hb = 类定义中self参数
sd = Province('山东','济南','王盛辉')

print(hb.Capital)
print(hb.memo)         #动态的对象可以访问静态类的静态字段
# print(Province.Name) #静态类不可以访问动态字段,name,capital,leader为动态字段
print(Province.memo)

hb.sports_game() #对象可以访问动态方法
sd.sports_game()

Province.Foo() #静态类可以访问静态方法
hb.Foo()       #动态对象可以访问静态方法

#访问特性
hb.Bar #无需括号, 把方法访问形式转变为字段访问形式
print(hb.Bar)

>>>>>>>>>
石家庄
中国23个省之一
中国23个省之一
河北正在开运动会
山东正在开运动会
每个省要带头反腐
每个省要带头反腐
河北
河北
something

原文地址:https://www.cnblogs.com/konglinqingfeng/p/9668275.html

时间: 2024-08-26 17:22:38

Python类中的字段,方法,属性区别及StaticMethod, Property的相关文章

python类中super()和__init__()的区别

本文和大家分享的主要是python开发中super()和__init__()的区别,希望通过本文的分享,对初学者学习这部分内容有所帮助. 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(self): print 'Base create' class childA(Base): def __init__(self): print 'creat A ', Base.__init__(self) class chi

Python类中的魔法方法之 __slots__

在类中每次实例化一个对象都会生产一个字典来保存一个对象的所有的实例属性,这样非常的有用处,可以使我们任意的去设置新的属性. 每次实例化一个对象python都会分配一个固定大小内存的字典来保存属性,如果对象很多的情况下会浪费内存空间. 可通过__slots__方法告诉python不要使用字典,而且只给一个固定集合的属性分配空间 class Foo(object): __slots__ = ("x","y","z") def __init__(sel

Python类中的魔法方法

1.getitem 方法 使用这个方法最大的印象就是调用对象的属性可以像字典取值一样使用中括号['key']使用中括号对对象中的属性进行取值.赋值或者删除时,会自动触发对应的__getitem__.__setitem__.__delitem__方法代码如下: class Foo(object): def __init__(self): self.name = 'jack' def __getitem__(self,item): if item in self.__dict__: # item =

C#反射类中所有字段,属性,方法(转)

可能大家都知道在C#中如何创建一个类,但对于类的结构可能大家不一定了解的很清楚,对于我来说,我之前也搞的不是很明白,今天,当我没事研究反射的时候突然发现了着一点. 我们来看类的结构到底是什么 public class People //类名 { private static string name; //字段 private string sex;//字段 public string Sex //属性 { get { return sex; } set { sex = value; } } pu

python 类中内置方法的重写

为达成目的,经常会在类中将一些内置方法进行重写,最常见的例如__setattr__,下面就通过内置属性,来查看重写会带来什么变化 先定义一个测试用的类,代码如下 class base: def __init__(self): pass inspect.getmembers(base): # 查看内置属性 打印结果如下 ('__class__', <class 'type'>) ('__delattr__', <slot wrapper '__delattr__' of 'object'

python类中内置方法之__call__

在python中自定义类时,如果该类实现了一个特殊方法__call__(),那么该类的实例则变成一个可调用的实例对象 如下 In [1]: class A():# 自定义一个A ...: def __call__(self,args): # 实现特殊方法__call__ ...: print(args) ...: In [2]: a = A() In [3]: a("__call__") __call__ a = A() # 对自定义的类A,实例化一个对象aa("__call

字段 | 方法 | 属性 | 类的成员 | Python

# ----------------------------------------- 字段 class Class: # 静态字段,属于类 # 已经创建,并且存放在类里,而不是每创建一个对象创建一次; country = '中国' def __init__(self, name): # 普通字段-->> 保存在创建的对象里 self.name = name # 普通方法-->> 保存在类里 def show(self): print(self.name) # 实例化对象 obj

Effective Java 第三版——16.在公共类中使用访问方法而不是公共属性

Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 16. 在公共类中使用访问方法而不是公共属性 有时候,你可能会试图写一些退化的类(degenerate classes),除了集中实例属性之外别无用处: // Degene

python类的三种方法

一.先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. ps.python中self,cls的区别 普通实例方法,第一个参数需要是self,它表示一个具体的实例本身.如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用.而对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身. # coding:utf-8 class Foo(object): """类三种方法语法形式"&