Python类或者对象的属性设计

       我个人是个相对纯粹一些的C程序员,而且是一个嵌入式控制器软件设计的C程序员。平时接触到的面向对象的东西比较少,即使是类似的思想也很少。偶尔能够用到一点复杂的结构体,基本用到的属性的概念基本上也都是基础的数据类型。这让我自己在接触Python面向对象编程的知识时有了一些思维上的定式。

       其实,在Python面向对象的程序设计中,类或者对象的属性可以非常灵活。常用的方式不仅仅是简单的基础数据类型对象,也有可能是复杂类的对象。

       简单举例,有如下代码:

#!/usr/bin/python

 

class Card:

       def __init__(self,rank,suit):

              self.suit = suit

              self.rank = rank

              self.hard,self.soft =self._points()

 

classNumberCard(Card):

       def _points(self):

              returnint(self.rank),int(self.rank)

 

classAceCard(Card):

       def _points(self):

              return 1,11

 

classFaceCard(Card):

       def _points(self):

              return 10,10

 

class Suit:

       def __init__(self,name,symbol):

              self.name = name

              self.symbol = symbol

       在上面的类中,rank以及suit两个属性其实都没有什么严格的格式或者类型的要求。因此,在实现上可能会出现多种方式创建对象都可用的现象。接下来,针对之前自己不常用的一种方式做一个简单的示范:

Club,Diamond,Heart,Spade= Suit('Club','CCC'),Suit('Diamond','DDD'),Suit('Heart','HHH'),Suit('Spade','SSS')

 

card1 =NumberCard('3',Club)

card2 =AceCard('A',Spade)

       上面的代码中,首先创建了四种花色的对象。然后,任意挑选了两个花色创建了两张不同的牌。当然,创建更多的牌只需要选择合适的组合方式,更多的例子不再进行示范。

       其实,之前自己惯性思维中OOP中属性只能够用基础数据类型的错误观念让我一直没有领悟到OOP的方便之处。从这里,慢慢地发现,其实OOP的思想以及设计技巧比我之前想象中的要强大的多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值