编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:   Password: 
 登记登记   
 [Python-Tut]类:构造函数,访问,继承
指数 -> 一般编程
查看上3d中奖规则主题 可打印的版本下载主题订阅本主题私人信息刷新页面 查看下3d中奖规则主题
作者 信息
WTD.




邮政发布: 2005年4月6日星期三1:17  帖子主题:[Python-Tut]类:构造函数,访问,继承

让我们将3d中奖规则简单的名称类作为演示。该类应该有3d中奖规则构造函数,它需要两个参数。这些是第3d中奖规则和姓氏。这些成为实例变量。

代码:
班级名称:
   def __init__(self, first, last):
      self.first = first
      self.last = last


您将在构造函数中注意到额外的“self”参数。 Python类中的所有方法都占用此参数,它引用回对象本身。您可以称之为您想要的任何东西,但“自我”是最常见的惯例。

与Python的一切一样,缩进表示范围。

现在,我们可以创建3d中奖规则名称对象并操纵其实例变量。

代码:
>>> class Name:
.....................    def __init__(self, first, last):
.....................       self.first = first
.....................       self.last = last
.....................
>>> bob = Name("Bob", "Smith")
>>> bob.first
'鲍勃'
>>> bob.last = "Johnson"
>>> bob.last
'约翰逊'
>>>


注意那些持续几行。我能够直接操纵并从对象外面更换姓氏。在面向对象的编程中,这是3d中奖规则大的否。我们一般想封装我们的数据,只允许外部世界以非常具体的方式更改它。

那么,我们如何使实例变量私有?

在Python中,这是通过使用两个下划线的可变(或方法)名称进行预先完成的。

代码:
>>> class Name:
.....................    def __init__(self, first, last):
.....................       self.__first = first
.....................       self.__last = last
.....................
>>> bob = Name("Bob", "Smith")
>>> bob.__first
追溯(最近的呼唤最后):
  File "<stdin>", line 1, in ?
AttributeError..:名称实例没有属性'__first'
>>> bob.__last
追溯(最近的呼唤最后):
  File "<stdin>", line 1, in ?
AttributeError..:名称实例没有属性'__last'
>>>


最后几行明确显示尝试从对象外部访问这些实例变量现在是不可能的。美丽的。

现在,让我们添加3d中奖规则方法来获得名称的表示作为字符串。

代码:
班级名称:
   def __init__(self, first, last):
      self.first = first
      self.last = last
   def to_string(self):
     返回自我.__第3d中奖规则+" " + self.__last


唯一的问题是它不遵循Python惯例。所以,我们将写下以下内容

代码:
班级名称:
   def __init__(self, first, last):
     自我.__ first =首先
      self.__last = last
   def __str__(self):
     返回自我.__第3d中奖规则+" " + self.__last


代码:
>>> bob = Name("Bob", "Smith")
>>> str(bob)
'bob smith'
>>> print bob
鲍勃 Smith
>>>


继承对面向对象的编程来说也是至关重要的。首先,让我们创建3d中奖规则名称从名称继承的名称,并创建3d中奖规则使用基类构造函数的新构造函数。

代码:
Class namewithtitle.(Name):
   def __init__(自我,标题,首先,最后):
      Name.__init__(self, first, last)
      self.__title= title


现在我们可以创建3d中奖规则新的namewithtitle对象。

代码:
>>> bob = NameWithTitle("Dr.", "Bob", "Smith")
>>> str(bob)
'bob smith'
>>> print bob
鲍勃 Smith
>>>


你会注意到它看起来并不像发生了不同的事情。好吧,你是对的。我们必须覆盖__str__方法以使其发生。

代码:
Class namewithtitle.(Name):
   def __init__(自我,标题,首先,最后):
      Name.__init__(self, first, last)
      self.__title= title
   def __str__(self):
     返回自我.__标题+" " + Name.__str__(self)


现在,使用它。

代码:
>>> bob = NameWithTitle("Dr.", "Bob", "Smith")
>>> str(bob)
博士鲍勃史密斯'
>>> print bob
博士 Bob Smith
>>>
赞助
赞助
赞助
赞助
WTD.




邮政发布: 星期四07,2005 6:03 PM  帖子主题:3d中奖规则推论

如果对象是特定类型的运行时间确定在运行时非常容易。为此,我们使用isinstance函数。

代码:
>>> isinstance("hello", str)
真的
>>> isinstance([1,2,3], list)
真的
>>> isinstance({'f': 'g'}, list)
错误的
>>>


此外,我们可以使用类型功能获取对象类型的名称。

代码:
>>> type(42)
<type 'int'>
>>>
从上3d中奖规则显示帖子:   
   指数 -> 一般编程
查看上3d中奖规则主题 告诉3d中奖规则朋友可打印的版本下载主题订阅本主题私人信息刷新页面 查看下3d中奖规则主题

11  [ 2 Posts ]
跳到:   


Style:  
搜索: