首页 > 编程语言 > 详细

python 类的成员

时间:2019-11-13 14:07:59      阅读:78      评论:0      收藏:0      [点我收藏+]

1. @staticmethod 静态方法

class People(object):
    def __init__(self,name):
        self.name = name

    @staticmethod       # 静态方法,不能访问实例变量和类变量,和类实际没啥关系,除了把它放到类里面,然后通过类来调用它。
    def getname(self,sex):  # 虽然有self,但是需要调用的时候手动传入实例。
        print(%s is a %s %(self.name,sex))

people = People(LaoWang)
people.getname(people,man)  # 想要访问实例变量,只能手动传递实例进入!如果写成:people.getname(‘man‘)会报错。

2. classmethod 类方法

class People(object):
    age = 30

    def __init__(self,name):
        self.name = name

    @staticmethod       # 静态方法,不能访问实例变量和类变量,和类实际没啥关系,除了把它放到类里面,然后通过类来调用它。
    def getname(self,sex):  # 虽然有self,但是需要调用的时候手动传入实例。
        print(%s is a %s %(self.name,sex))

    @classmethod   # 类方法,只能访问类变量,不能访问实例变量,如果要访问实例变量,需要手动传入实例。
    def getage(cls):
        print(age is %s % cls.age)

people = People(LaoWang)
people.getname(people,man)  # 想要访问实例变量,只能手动传递实例进入!如果写成:people.getname(‘man‘)会报错。
people.getage()

3. @property 属性方法,把一个方法变成属性,调用时不加括号。

class People(object):
    age = 30

    def __init__(self,name):
        self.name = name

    @staticmethod       # 静态方法,不能访问实例变量和类变量,和类实际没啥关系,除了把它放到类里面,然后通过类来调用它。
    def getname(self,sex):  # 虽然有self,但是需要调用的时候手动传入实例。
        print(%s is a %s %(self.name,sex))

    @classmethod   # 类方法,只能访问类变量,不能访问实例变量,如果要访问实例变量,需要手动传入实例。
    def getage(cls):
        print(age is %s % cls.age)

    @property     # 属性方法,把一个方法变成属性。调用时不用加括号。
    def eat(self):
        print(%s is eating. %self.name)

people = People(LaoWang)
people.getname(people,man)  # 调用静态方法。想要访问实例变量,只能手动传递实例进入!如果写成:people.getname(‘man‘)会报错。
people.getage()                # 调用类方法。
people.eat                     # 调用属性方法。不加括号

属性方法的修改和删除:

class People(object):
    age = 30

    def __init__(self,name):
        self.name = name

    @staticmethod       # 静态方法,不能访问实例变量和类变量,和类实际没啥关系,除了把它放到类里面,然后通过类来调用它。
    def getname(self,sex):  # 虽然有self,但是需要调用的时候手动传入实例。
        print(%s is a %s %(self.name,sex))

    @classmethod   # 类方法,只能访问类变量,不能访问实例变量,如果要访问实例变量,需要手动传入实例。
    def getage(cls):
        print(age is %s % cls.age)

    @property     # 属性方法,把一个方法变成属性。调用时不用加括号。
    def eat(self):
        print(%s is eating. %self.name)
    @eat.setter   # 属性的修改
    def eat(self,food):
        print(This is eat setter: %s %food)
    @eat.deleter  # 属性的删除
    def eat(self):
        print(eat has been deleted.)

people = People(LaoWang)
people.getname(people,man)  # 调用静态方法。想要访问实例变量,只能手动传递实例进入!如果写成:people.getname(‘man‘)会报错。
people.getage()                # 调用类方法。

people.eat                     # 调用属性方法。不加括号
people.eat = suger          # 调用eat.setter
del people.eat                 # 调用eat.deleter

 

python 类的成员

原文:https://www.cnblogs.com/wztshine/p/11848214.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!