python中属性和方法_python中类的属性和方法介绍

Python-类属性,实例属性,类方法,静态方法,实例方法

类属性和实例属性

#coding:utf-8

class Student(object):

name = 'I am a class variable' #类变量

>>> s = Student() # 创建实例s

>>> print(s.name) # 打印name属性,因为实例并没有name属性,所以会继续查找class的name属性

Student

>>> print(Student.name) # 打印类的name属性

Student

>>> s.name = 'Michael' # 给实例绑定name属性

>>> print(s.name) # 由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性

Michael

>>> print(Student.name) # 但是类属性并未消失,用Student.name仍然可以访问

Student

>>> del s.name # 如果删除实例的name属性

>>> print(s.name) # 再次调用s.name,由于实例的name属性没有找到,类的name属性就显示出来了

Student

类方法,实例方法,静态方法

实例方法,第一个参数必须要默认传实例对象,一般习惯用self。

静态方法,参数没有要求。

类方法,第一个参数必须要默认传类,一般习惯用cls。

# coding:utf-8

class Foo(object):

"""类三种方法语法形式"""

def instance_method(self):

print("是类{}的实例方法,只能被实例对象调用".format(Foo))

@staticmethod

def static_method():

print("是静态方法")

@classmethod

def class_method(cls):

print("是类方法")

foo = Foo()

foo.instance_method()

foo.static_method()

foo.class_method()

print('----------------')

Foo.static_method()

Foo.class_method()

运行结果:

是类的实例方法,只能被实例对象调用

是静态方法

是类方法

----------------

是静态方法

是类方法

类方法

由于python类中只能有一个初始化方法,不能按照不同的情况初始化类,类方法主要用于类用在定义多个构造函数的情况。

特别说明,静态方法也可以实现上面功能,当静态方法每次都要写上类的名字,不方便。

# coding:utf-8

class Book(object):

def __init__(self, title):

self.title = title

@classmethod

def class_method_create(cls, title):

book = cls(title=title)

return book

@staticmethod

def static_method_create(title):

book= Book(title)

return book

book1 = Book("use instance_method_create book instance")

book2 = Book.class_method_create("use class_method_create book instance")

book3 = Book.static_method_create("use static_method_create book instance")

print(book1.title)

print(book2.title)

print(book3.title)

ad51e517755f8fd6a7ec83ced4ecfaf3.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值