GVKun编程网logo

Python-为什么在类中使用“自我”?(python类为什么self)

22

本篇文章给大家谈谈Python-为什么在类中使用“自我”?,以及python类为什么self的知识点,同时本文还将给你拓展java–在OOP中,在类中使用“this”的最佳实践是什么?、python–

本篇文章给大家谈谈Python-为什么在类中使用“自我”?,以及python类为什么self的知识点,同时本文还将给你拓展java – 在OOP中,在类中使用“this”的最佳实践是什么?、python – 为什么在字符串连接中使用os.path.join?、python – 如何从函数中获取函数的名称(或者对函数的“自我”引用)?、Python-为什么在声明时执行Button参数“ command”?等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Python-为什么在类中使用“自我”?(python类为什么self)

Python-为什么在类中使用“自我”?(python类为什么self)

这两个类别有何不同?

class A():    x=3class B():    def __init__(self):        self.x=3

有什么明显的区别吗?

答案1

小编典典

A.x是一个 类变量Bself.x是一个 实例变量

Ax被实例之间共享。

用可以像列表这样修改的东西更容易证明区别:

#!/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 – 在OOP中,在类中使用“this”的最佳实践是什么?

我一直在想的东西在你可以使用’这个[NAME]’或简单的[NAME]参考会员的课程中,这是首选的?

例如在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?

python – 为什么在字符串连接中使用os.path.join?

我想,我无法在这里看到更大的图景;但基本上我不知道为什么你会使用os.path.join而不是正常的字符串连接?

我主要使用VBScript,所以我不明白这个功能的意义.

解决方法

手提

编写文件路径操作一次,它可以在许多不同的平台上免费使用.分隔字符被抽象化,使您的工作更轻松.

聪明

您不再需要担心该目录路径是否具有trailing slash or not. os.path.join将在需要时添加它.

明确

使用os.path.join可以让其他人阅读您正在使用文件路径的代码.人们可以快速扫描代码并发现它本质上是一个文件路径.如果您决定自己构建它,您可能会让读者不要发现代码的实际问题:“嗯,一些字符串concats,一个替换.这是一个文件路径还是什么?Gah!为什么他没有使用os.path .加入?”

总结

以上是小编为你收集整理的python – 为什么在字符串连接中使用os.path.join?全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

python – 如何从函数中获取函数的名称(或者对函数的“自我”引用)?

python – 如何从函数中获取函数的名称(或者对函数的“自我”引用)?

This answer显示函数的内置__name__属性可以从函数外部使用,即print f .__ name__.但是,如何从函数本身中获取此属性?

只使用不合格的__name__没有帮助:print __name__ print __main__.

在f()中使用print f .__ name__看起来很愚蠢 – 我也可以输入“f”.

或者,是否有一种函数的自身对象,即我可以获得指向以常见方式执行的函数的指针吗?

我不喜欢this question中提出的方法 – 它觉得为这么简单的任务乱砍堆栈不是正确的方法.

动机:我有一个{keyword:function}的字典,从输入中读取关键字并执行适当的功能.我希望每个函数只执行一次,所以我希望每个函数在执行时在一些数据结构中注册自己.我知道我可以在字典中做到这一点,但我想为此使用单独的数据结构.

Python版本是2.6.4 BTW

解决方法

也许你应该使用onlyonce装饰器装饰你正在调用的每个函数?那将是更加pythonic.概念证明如下.

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-为什么在声明时执行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”?的相关信息,可以在本站进行搜索。

本文标签: