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

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

查看所有标签

猜你喜欢:

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

矩阵论

矩阵论

方保镕 / 清华大学出版社 / 2004-1 / 39.00元

本书比较全面、系统地介绍了矩阵的基本理论、方法及其应用。全书分上、下两篇,共10章,分别介绍了线性空间与线性算子,内积空间与等积变换,λ矩陈与若尔当标准形,赋范线性空间与矩阵范数,矩阵的微积分运算及其应用,广义逆矩阵及其应用,矩阵的分解,矩阵的克罗内克积、阿达马积与反积,几类特殊矩阵(如:非负矩阵与正矩阵、循环矩阵与素矩阵、随机矩阵和双随机矩阵、单调矩阵、M矩阵与H矩阵、T矩阵与汉大象尔矩阵等),......一起来看看 《矩阵论》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试