《Python 3 面向对象编程》学习笔记(四)-类变量与self变量

类变量与self变量

示例 1:

class Contact:
	all_contacts = []
	def __init__(self, name, email):
		self.name = name
		self.email = email

知识点:
(1)类定义首行可以写成等效的:

class Contactobject:
#或
class Contact():

所有的Python 类都是特殊的object类的子类。示例中:object是Contact类的父类【超类supper】
(2)类变量:all_contacts 列表,由于它是类定义的一部分,故被这个类的所有实例对象所共享,有点像C++类内的静态变量。这意味着只有一个Contact.all_contacts 列表,可以通过Contact.all_contacts 访问。当然也可以用"self.all_contacts"来访问。

内置类扩展-继承于内置类

示例 2:扩展内置对象

class ContactList(list):
	def search(self, name):
'''Return all contacts that contain the search value in their name.'''
		matching_contacts = []
		for contact in self:
			if name in contact.name:
				matching_contacts.append(contact)
				return matching_contacts

class ContactList(list):通过类继承扩展了list的功能.
完整代码:

class ContactList(list):
	def search(self, name):
		matching_contacts = []
		for contact in self:
			if name in contact.name:
				matching_contacts.append(contact)
		return matching_contacts
class Contact:
	all_contacts = ContactList()
	def __init__(self, name, email):
		self.name = name
		self.email = email
		self.all_contacts.append(self)
class Supplier(Contact):
    def order(self, order):
        print("If this were a real system we would send ""'{}' order to '{}'".format(order, self.name))

解释:同一模块中的类之间的定义与调用存在顺序结构要求:上述Contact调用all_contacts = ContactList()实例化时,必须先存在class ContactList(list):定义。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值