0
点赞
收藏
分享

微信扫一扫

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的思想以及设计技巧比我之前想象中的要强大的多。


举报

相关推荐

0 条评论