Python 面向对象-方法

栏目: Python · 发布时间: 6年前

内容简介:类方法是类对象的方法,在定义时需要在上方使用输出结果:静态方法是一个任意函数,在其上方使用
Python 面向对象,类方法、静态方法、实例方法和属性方法学习与总结。

类方法

类方法是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为 cls 。表示类对象,类对象和实例对象都可调用。

class Person:
    def __init__(self, name, age, phone):
        self.name = name
        self.age = age
        self._phone = phone

@classmethod
    def say(cls):  # 传递参数为cls
        print("Hello......")


p = Person("fzy", 24, "13111112222")
p.say()  # 类的实例对象调用
Person.say()  # 类对象调用

输出结果:

Hello......
Hello......

静态方法

静态方法是一个任意函数,在其上方使用 @staticmethod 进行装饰,可以用对象直接调用,静态方法实际上跟该类没有太大关系。

class Person:
    def __init__(self, name, age, phone):
        self.name = name
        self.age = age
        self._phone = phone

@staticmethod
    def say():  # 无需传递参数
        print("Hello......")


p = Person("fzy", 24, "13111112222")
p.say()  # 类的实例对象调用
Person.say()  # 类对象调用

输出结果:

Hello......
Hello......

Python 3 中,如果方法只通过类调用,而不需要通过实例调用的话,不用非要声明为静态的。

class Person:
    def __init__(self, name, age, phone):
        self.name = name
        self.age = age
        self._phone = phone

    @staticmethod
    def say():  # 无需传递参数
        print("Hello......")


p = Person("fzy", 24, "13111112222")
p.say()  # 类的实例对象调用
Person.say()  # 类对象调用

实例方法

类实例方法是类实例化对象的方法,只有实例对象可以调用,形参为 self ,指代对象本身。

class Person:
    def __init__(self, name, age, phone):
        self.name = name
        self.age = age

    def say(self):  # 传递参数self
        print("My name is ", self.name)


p = Person("fzy", 24, "13111112222")
p.say()  # 类的实例对象调用

输出结果:

My name is fzy

属性方法

通常,在面向对象的编程语言里,会为私有属性设置 gettersetter 方法来实现对私有属性的获取和设置功能。如下所示:

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age

    def get_name(self):
        return self._name

    def set_name(self, value):
        self._name = value

    def get_age(self):
        return self._age

    def set_age(self, value):
        self._age = value


p = Person("fzy", 24)
print(p.get_name(), p.get_age())
p.set_name("cj")
p.set_age(23)
print(p.get_name(), p.get_age())

输出结果:

fzy 24
cj 23

属性方法的作用就是通过 @property 把一个方法变成一个静态属性。使用 property 取代 gettersetter 方法。

class Person:
    def __init__(self, name, age):
        self._name = name
        self._age = age

@property
    def name(self):
        return self._name

@name.setter
    def name(self, value):
        self._name = value

@property
    def age(self):
        return self._age

@age.setter
    def age(self, value):
        self._age = value


p = Person("fzy", 24)
print(p.name, p.age)
p.name = "cj"
p.age = 23
print(p.name, p.age)

输出结果:

fzy 24
cj 23

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Go Web 编程

Go Web 编程

[新加坡]Sau Sheong Chang(郑兆雄) / 黄健宏 / 人民邮电出版社 / 2017-11-22 / 79

《Go Web 编程》原名《Go Web Programming》,原书由新加坡开发者郑兆雄(Sau Sheong Chang)创作、 Manning 出版社出版,人名邮电出版社引进了该书的中文版权,并将其交由黄健宏进行翻译。 《Go Web 编程》一书围绕一个网络论坛 作为例子,教授读者如何使用请求处理器、多路复用器、模板引擎、存储系统等核心组件去构建一个 Go Web 应用,然后在该应用......一起来看看 《Go Web 编程》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具