小编use*_*991的帖子

Python 继承:何时以及为什么 __init__

我是 Python 新手,试图了解继承方法背后的哲学/逻辑。问题最终涉及为什么以及何时必须__init__在子类中使用该方法。例子:

从超类继承的子类似乎不需要自己的构造函数(__init__) 方法。下面,一只狗继承了哺乳动物的属性(名字、年龄)和方法(makenoise)。你甚至可以添加一个方法 ( do_a_trick) 一切都像它“应该的”那样工作,看起来。

但是,如果我想在子类中添加一个新属性,就像我在 Cats 类中所做的那样,我会收到一条错误消息,指出“self”未定义。然而,我在狗类的定义中使用了“自我”。区别的本质是什么?它似乎定义了 Cats,因为我希望我需要使用__init__(self,name)super()__init__(name)。为什么会有差异?

class Mammals(object):

  def __init__(self,name):
    self.name = name
    print("I am a new-born "+ self.name)  
    self.age = 0

  def makenoise(self):
    print(self.name + " says Hello")

class Dogs(Mammals):

  def do_a_trick(self):
    print(self.name + " can roll over")

class Cats(Mammals):

 self.furry = "True"  #results in error `self' is not defined


mymammal = Mammals("zebra") #output "I am a new-born zebra"
mymammal.makenoise()  #output "zebra says hello" …
Run Code Online (Sandbox Code Playgroud)

python inheritance

5
推荐指数
1
解决办法
4916
查看次数

VBA加载项ActiveWorkBook何时变为活动状态?

上下文:Excel 2013 VBA.使用外接程序时,术语"ActiveWorkBook"应该引用正在编辑的文档,而"ThisWorkBook"引用后台中的外接程序.考虑一下代码

在加载项的ThisWorkBook模块中

Private WithEvents App As Application

Private Sub Workbook_Open()
Set App = Application
End Sub

Private Sub App_WorkBookOpen(ByVal Wb As Workbook)

MsgBox Wb.Name & " " & Wb.Worksheets(1).Cells(1, 1)
If Wb.Worksheets(1).Cells(1, 1) = "AAA" Then
    MsgBox "Cell OK", 
    MsgBox ActiveWork.Name
End If
End Sub
Run Code Online (Sandbox Code Playgroud)

加载项已启用,Excel已启动.到现在为止还挺好.现在,如果我在Sheet1的单元格(1,1)中打开包含"AAA"的文件"Book1",我会收到:

"Book1.xlsm AAA"(在消息框中,如预期的那样),然后"Cell OK",如预期的那样.
但是然后错误"Object Required"引用了MsgBox行"ActiveWorkBook.Name".所以当时Book1还不是ActiveWorkBook.什么时候变成这样?或者我该怎么做呢?(在MsgBox没有帮助之前,像"Wb.Activate"之类的东西)

这个问题出现在一个更加复杂的现实世界中,而且似乎与某些安全问题紧密相关.我试图通过一个简单的例子来理解这种行为

excel vba excel-vba

3
推荐指数
1
解决办法
1224
查看次数

tkinter 中的类似电子表格的应用程序?

假设有人想在 tkinter 中构建一个电子表格。所以一个人可以有(许多)单元格,其中大部分需要文本输入,但有些可能是下拉列表(tkinter 组合框)等。

对于任何大小的电子表格,这在 tkinter 中是否可行?(比如 100x10)?或者很多 tkinter Text 对象和组合框等只是处理性能方面的问题?(或者除了对许多 tkinter 对象进行网格化之外,还有其他方法可以做到这一点吗?)

我问这不是因为我想从字面上做这件事,而是因为我需要构建一个应用程序,在其中向用户呈现大量信息,其中任何信息都是可编辑的。用户可以方便地直接访问这些块(单击单元格),而不必通过一些初步界面。

python tkinter

3
推荐指数
1
解决办法
1871
查看次数

标签 统计

python ×2

excel ×1

excel-vba ×1

inheritance ×1

tkinter ×1

vba ×1