类的属性和方法

一、类的静态方法和类方法

>>> class TestStaticMethod():  # 静态方法是需要传入任何参数的
    def foo():
        print(‘calling static method foo()‘)   foo = staticmethod(foo)
>>> class TestClassMethod():  # 类方法需要指定一个变量,作为调用时传入给类方法的第一个参数,一般都使用cls来指定
    def foo(cls):
        print(‘calling class method foo()‘)
        print(‘foo() is part of class:‘,cls.__name__)
    foo = classmethod(foo)
>>> tsm  = TestStaticMethod()# 可以通过类名加方法的方式调用
>>> TestStaticMethod.foo()
calling static method foo()# 通过类的实例来调用静态方法
>>> tsm.foo()
calling static method foo()
>>> tcm = TestClassMethod()# 通过类的实例调用类方法
>>> tcm.foo()
calling class method foo()
foo() is part of class: TestClassMethod# 通过类调用类方法
>>> TestClassMethod.foo()
calling class method foo()
foo() is part of class: TestClassMethod

对上面的代码使用装饰器来优化:

# 使用装饰器对函数重新绑定和赋值
>>> class TestStaticMethod():
  # 静态方法是需要传入任何参数的,使用装饰器调用,相当于:foo = staticmethod(foo)
    @staticmethod
    def foo():
        print(‘calling static method foo()‘)
>>> class TestClassMethod():
  # 类方法需要指定一个变量,作为调用时传入给类方法的第一个参数,一般都使用cls来指定,使用装饰器赋值类方法,相当于: foo = classmethod(foo)
    @classmethod
    def foo(cls):
        print(‘calling class method foo()‘)
        print(‘foo() is part of class:‘,cls.__name__)
>>> tsm  = TestStaticMethod()
# 可以通过类名加方法的方式调用
>>> TestStaticMethod.foo()
calling static method foo()
# 通过类的实例来调用静态方法
>>> tsm.foo()
calling static method foo()
>>> tcm = TestClassMethod()
# 通过类的实例调用类方法
>>> tcm.foo()
calling class method foo()
foo() is part of class: TestClassMethod
# 通过类调用类方法
>>> TestClassMethod.foo()
calling class method foo()
foo() is part of class: TestClassMethod
时间: 2024-11-16 20:30:08

类的属性和方法的相关文章

<九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性

设计类 --->设计类是系统实施中一个或多个对象的抽象.        --->设计类已经直接映射到实现代码了,因此设计类依赖于实施语言.另一方面,设计类来源于前期的系统分析,在统一过程中,类不是品空想像出来的.他们可以一一映射到前期系统分析的成果上.从这个观点出发,分析类的重要性就能够体现出来.分析类为设计类中多需要的界面,逻辑和数据提供了非常好的抽象基础,设计类可以非常容易和自然地从分析类中演化出来. 类        --->类对对象进行定义,而对象又实现(或成为实施)用例.类的来

关于对象、类、属性和方法的理解

文章开头申明:半路出家的野路子,可能个人理解有所欠缺,希望不吝赐教. 在初步学习java的过程中,往往都是绕不开面向对象的思想,说到对象或许挺多初学者和我一样只是听说过一个"万物皆对象"的说法,简单的记下对象包含属性和方法,然而实际使用的过程中往往有忽略这些东西,也就是犯浑了.个人的理解是希望将对象.类.属性和方法用一个例子来简单说明. 打个比方说我到商场买手机这个例子吧.我到了商场买手机,第一步自然就是向售货员提出我的要求:如手机大小.CPU.内存等等(属性),要求能拍照打电话首发短

波哥学JAVA,定义类 创建对象 实例化对象 属性 类调用属性或者方法

定义类 声明对象  创建对象 实例化对象 属性 对象调用属性或者方法 举例,下面定义类了一个类并声明属性,写了一个方法: 创建对象 实例化对象 属性 类调用属性或者方法

Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找

Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找 //查找是否存在 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := 'CodeGear Delphi 2007 for Win32';   reg.RegEx  := '\d';   if reg.Match then     ShowMessage('找到了')   else     ShowMessage('

Delphi 正则表达式之TPerlRegEx 类的属性与方法(2): 关于子表达式

Delphi 正则表达式之TPerlRegEx 类的属性与方法(2): 关于子表达式 // MatchedExpression 与 SubExpressions[0] var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := 'CodeGear Delphi 2007';   reg.RegEx  := 'Delphi';   while reg.MatchAgain do   begin    

Delphi 正则表达式之TPerlRegEx 类的属性与方法(4): Replace

Delphi 正则表达式之TPerlRegEx 类的属性与方法(4): Replace // Replace var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.RegEx  := 'ab';   reg.Replacement := '◆';   reg.Subject := 'ababab';   reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: ◆◆◆  

Delphi 正则表达式之TPerlRegEx 类的属性与方法(5): Compile、Study

Delphi 正则表达式之TPerlRegEx 类的属性与方法(5): Compile.Study // Compile.Study var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.RegEx  := 'ab';   reg.Options := [preCaseLess];   reg.Compile; {编译表达式}   reg.Study; {Study 方法会检查是否编译, 如果没有编译则执行 Com

Delphi 正则表达式之TPerlRegEx 类的属性与方法(3): Start、Stop

Delphi 正则表达式之TPerlRegEx 类的属性与方法(3): Start.Stop //设定搜索范围: Start.Stop var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := 'ababab';   reg.RegEx  := 'ab';   reg.Replacement := '◆';   reg.Start := 1;   reg.Stop := 2;   while re

Delphi 正则表达式之TPerlRegEx 类的属性与方法(6): EscapeRegExChars 函数

Delphi 正则表达式之TPerlRegEx 类的属性与方法(6): EscapeRegExChars 函数 // EscapeRegExChars 函数可以自动为特殊字符加转义符号 \ var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := 'C++Builer';   reg.RegEx  := reg.EscapeRegExChars('C+') + '{2}'; {相当于 'C\+{2

Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数

Delphi 正则表达式之TPerlRegEx 类的属性与方法(7): Split 函数 //字符串分割: Split var   reg: TPerlRegEx;   List: TStrings; begin   List := TStringList.Create;   reg := TPerlRegEx.Create(nil);   reg.Subject := 'aaa,bbb,ccc,ddd';   reg.RegEx  := ','; {这里可是运行相当复杂的分割符啊}   reg