本篇文章给大家谈谈Python-为什么在类中使用“自我”?,以及python类为什么self的知识点,同时本文还将给你拓展java–在OOP中,在类中使用“this”的最佳实践是什么?、python–
本篇文章给大家谈谈Python-为什么在类中使用“自我”?,以及python类为什么self的知识点,同时本文还将给你拓展java – 在OOP中,在类中使用“this”的最佳实践是什么?、python – 为什么在字符串连接中使用os.path.join?、python – 如何从函数中获取函数的名称(或者对函数的“自我”引用)?、Python-为什么在声明时执行Button参数“ command”?等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- Python-为什么在类中使用“自我”?(python类为什么self)
- java – 在OOP中,在类中使用“this”的最佳实践是什么?
- python – 为什么在字符串连接中使用os.path.join?
- python – 如何从函数中获取函数的名称(或者对函数的“自我”引用)?
- Python-为什么在声明时执行Button参数“ command”?
Python-为什么在类中使用“自我”?(python类为什么self)
这两个类别有何不同?
class A(): x=3class B(): def __init__(self): self.x=3
有什么明显的区别吗?
答案1
小编典典A.x
是一个 类变量 。 B
的self.x
是一个 实例变量 。
即A
的x
被实例之间共享。
用可以像列表这样修改的东西更容易证明区别:
#!/usr/bin/env pythonclass A: x = [] def add(self): self.x.append(1)class B: def __init__(self): self.x = [] def add(self): self.x.append(1)x = A()y = A()x.add()y.add()print("A''s x:", x.x)x = B()y = B()x.add()y.add()print("B''s x:", x.x)
输出量
A''s x: [1, 1]B''s x: [1]
java – 在OOP中,在类中使用“this”的最佳实践是什么?
例如在Java中:
public class foo { public int bars = 0; private void incrementBars(){ bars++; } }
和
public class foo { public int bars = 0; private void incrementBars(){ this.bars++; } }
“似乎”有同样的效果.
在我实例化类foo的多个实例的情况下,到目前为止,我会做一些类似于
for (foo f : listofFoos){ f.incrementBars(); }
它似乎仍然工作.
这在技术上是不明确的吗?
解决方法
variable shadowing
的情况下使用
this
.
class MyClass{ int i;//1 public void myMethod(){ i = 10;//referring to 1 } public void myMethod(int i){//2 i = 10;//referring to 2 this.i = 10 //refering to 1 } }
也有时候this
将使代码更可读,因为我们的英语心态
python – 为什么在字符串连接中使用os.path.join?
我主要使用VBScript,所以我不明白这个功能的意义.
解决方法
编写文件路径操作一次,它可以在许多不同的平台上免费使用.分隔字符被抽象化,使您的工作更轻松.
聪明
您不再需要担心该目录路径是否具有trailing slash or not. os.path.join将在需要时添加它.
明确
使用os.path.join可以让其他人阅读您正在使用文件路径的代码.人们可以快速扫描代码并发现它本质上是一个文件路径.如果您决定自己构建它,您可能会让读者不要发现代码的实际问题:“嗯,一些字符串concats,一个替换.这是一个文件路径还是什么?Gah!为什么他没有使用os.path .加入?”
总结
以上是小编为你收集整理的python – 为什么在字符串连接中使用os.path.join?全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
python – 如何从函数中获取函数的名称(或者对函数的“自我”引用)?
只使用不合格的__name__没有帮助:print __name__ print __main__.
在f()中使用print f .__ name__看起来很愚蠢 – 我也可以输入“f”.
或者,是否有一种函数的自身对象,即我可以获得指向以常见方式执行的函数的指针吗?
我不喜欢this question中提出的方法 – 它觉得为这么简单的任务乱砍堆栈不是正确的方法.
动机:我有一个{keyword:function}的字典,从输入中读取关键字并执行适当的功能.我希望每个函数只执行一次,所以我希望每个函数在执行时在一些数据结构中注册自己.我知道我可以在字典中做到这一点,但我想为此使用单独的数据结构.
Python版本是2.6.4 BTW
解决方法
called = set() def onlyonce(fn): def decorated(*largs,**kargs): if fn not in called: called.add(fn) print "Calling" fn(*largs,**kargs) else: print "Already called" return decorated @onlyonce def test_function(): print "I am getting called Now" test_function() test_function() test_function() test_function()
此外,函数是“不可变的”,可以存储为字典键.您不必依赖名称.根据您的使用情况,这可能是一个优势(或缺点).
Python-为什么在声明时执行Button参数“ command”?
我是Python的新手,正在尝试使用tkinter编写程序。为什么执行下面的Hello函数?据我了解,仅在按下按钮时才会执行回调?我很困扰…
>>> def Hello(): print("Hi there!")>>> hi=Button(frame,text="Hello",command=Hello())Hi there!>>>
答案1
小编典典在为其Button分配参数时调用它:
command=Hello()
如果要传递函数(不是返回值),则应改为:
command=Hello
通常function_name
是一个函数对象,function_name()
就是函数返回的结果。看看这是否有帮助:
>>> def func():... return ''hello''... >>> type(func)<type ''function''>>>> type(func())<type ''str''>
如果要传递参数,则可以使用lambda表达式构造无参数可调用对象。
>>> hi=Button(frame, text="Hello", command=lambda: Goodnight("Moon"))
简而言之,因为Goodnight("Moon")
它位于lambda中,所以它不会立即执行,而是要等到单击按钮后才能执行。
我们今天的关于Python-为什么在类中使用“自我”?和python类为什么self的分享就到这里,谢谢您的阅读,如果想了解更多关于java – 在OOP中,在类中使用“this”的最佳实践是什么?、python – 为什么在字符串连接中使用os.path.join?、python – 如何从函数中获取函数的名称(或者对函数的“自我”引用)?、Python-为什么在声明时执行Button参数“ command”?的相关信息,可以在本站进行搜索。
本文标签: