目录

一、类的属性

二、类的方法

1.  实例方法

2.  类方法

3.  自由方法

4.  静态方法

5.  保留方法


属性和方法是类对外交互所提供的两种接口方式。

一、类的属性

  • 类的属性:属性是类内部定义的变量,用于描述类的一些特性参数。
  • 类属性:类对象的属性,由所有实例对象所共享。
  • 实例属性:实例对象的属性,由各实例对象所独享。

Python中怎么在类中写属性 python类属性和类方法_编程语言


代码实例

class DemoClass:       # 定义类对象
    count = 0          # 类属性,直接在类中定义或赋值

    def __init__(self, name, age):
        self.name = name   # 实例属性,在类内部,用self.<属性名>访问
        self.age = age
        DemoClass.count += 1


dc1 = DemoClass("小明", 14)        # 实例对象
dc2 = DemoClass("小吴", 12)        # 实例对象
dc3 = DemoClass("小张", 13)        # 实例对象
print("总数:", DemoClass.count)   # 类属性,统一用<类名>.<属性名>访问
print(dc1.name, dc2.name, dc3.name)         # 实例属性,在类外部,用<对象名>.<属性名>访问

运行结果

Python中怎么在类中写属性 python类属性和类方法_编程语言_02

二、类的方法

类的方法:方法是类内部定义的函数,用来给出类的操作方法


1.  实例方法

实例对象的方法,由各实例对象独享,是类内部定义的函数(最常用的形式)。

Python中怎么在类中写属性 python类属性和类方法_面向对象编程_03

代码实例

class DemoClass:
    def __init__(self, name):
        self.name = name
    def lucky(self):       # 定义一个方法lucky
        s = 0
        for c in self.name:
            s += ord(c) % 100
        return s


dc1 = DemoClass("小明")
dc2 = DemoClass("小吴")
print(dc1.name,"的幸运数字是:", dc1.lucky())     # 调用lucky方法
print(dc2.name,"的幸运数字是:", dc2.lucky())

Python中怎么在类中写属性 python类属性和类方法_编程语言_04


2.  类方法

类对象的方法,是与类对象相关的函数,由所有实例对象共享。

  • 类方法至少包含一个参数,表示类对象,建议用cls
  • @classmethod是装饰器,类方法定义所必须
  • 类方法只能操作类属性和其他类方法,不能操作实例属性和实例方法

Python中怎么在类中写属性 python类属性和类方法_Python中怎么在类中写属性_05

代码实例

class DemoClass:
    count = 0
    def __init__(self,name):
        self.name = name
        DemoClass.count += 1

    @classmethod     # 类方法使用装饰器表示
    def getChrCount(cls):   # 类方法只能使用类属性或其他类方法
        s = "零一二三四五六七八九十多"
        return s[DemoClass.count]


dc1 = DemoClass("小明")
dc2 = DemoClass("小吴")
print(dc1.getChrCount())
print(DemoClass.getChrCount())


Python中怎么在类中写属性 python类属性和类方法_python_06


3.  自由方法

类中的一个普通函数,由类所在命名空间管理,类对象独享。

  • 自由方法不需要self或cls这类参数,可以没有参数
  • 自由方法只能操作类属性和类方法,不能操作实例属性和实例方法
  • 自由方法的使用只能使用<类名>

Python中怎么在类中写属性 python类属性和类方法_类_07

代码实例

"""
自由方法就是类中普通函数理解为:定义在类命名空间中的函数也可以定义在类外,习惯不同
"""
class DemoClass:
    count = 0
    def __init__(self,name):
        self.name = name
        DemoClass.count += 1

    def foo():
        DemoClass.count *= 100
        return DemoClass.count
dc1 =DemoClass("老王")
print(DemoClass.foo())

Python中怎么在类中写属性 python类属性和类方法_Python中怎么在类中写属性_08


4.  静态方法

类中的一个普通函数,由类对象和实例对象共享。

  • 静态方法可以没有参数,可以理解为定义在类中的普通函数
  • @staticmethod是装饰器,静态方法定义所必须
  • 静态方法只能操作类属性和其他类方法,不能操作实例属性和实例方法
  • 相比于自由方法,静态方法能够使用<类名>和<对象名>两种方式使用

Python中怎么在类中写属性 python类属性和类方法_python_09

代码实例

"""
静态方法就是类中普通函数但这类方法能够被类和对象调用
"""

class DemoClass:
    count = 0
    def __init__(self,name):
        self.name = name
        DemoClass.count += 1

    @staticmethod
    def foo():
        DemoClass.count *= 100
        return DemoClass.count

dc1 =DemoClass("小明")
print(DemoClass.foo())
print(dc1.foo())

Python中怎么在类中写属性 python类属性和类方法_Python中怎么在类中写属性_10


5.  保留方法

由双下划线开始和结束的方法,保留使用,如__len__()

Python中怎么在类中写属性 python类属性和类方法_类_11

代码实例

class DemoClass:
    count = 0
    def __init__(self,name):
        self.name = name
        DemoClass.count += 1

    def __len__(self):    # Python解释器保留方法已对应,只需要编写代码即可
        return len(self.name)

dc1 = DemoClass("小明")
dc2 = DemoClass("小吴的玩具")
print(len(dc1))
print(len(dc2))

Python中怎么在类中写属性 python类属性和类方法_类_12