我想使用实例的属性值将默认参数传递给实例方法:
class C:
def __init__(self, format):
self.format = format
def process(self, formatting=self.format):
print(formatting)
Run Code Online (Sandbox Code Playgroud)
尝试时,我收到以下错误消息:
NameError: name 'self' is not defined
Run Code Online (Sandbox Code Playgroud)
我希望该方法的行为如下:
C("abc").process() # prints "abc"
C("abc").process("xyz") # prints "xyz"
Run Code Online (Sandbox Code Playgroud)
这里有什么问题,为什么这不起作用?我怎么能做这个工作?
我想创建一个无法从外部访问的实例变量.在objective-c中有可能是这样的吗?我记得Apple有私有变量和类似的东西,但如果人们知道它们,他们就可以使用它们.Apple称之为"私有API",但显然其他人可以访问那些东西,如果他们发现那里有什么.
到目前为止,我认为像这样的东西创建了一个私有实例变量:
@interface MyClass : NSObject {
CGFloat weight;
}
Run Code Online (Sandbox Code Playgroud)
没有@property,没有@synthesize,只是上面的声明.
另外我知道Apple添加了一个_inFrontOfTheirPrivateInstanceVariables,但他们说某些地方他们不喜欢看到其他人这样做,因为他们可能会在执行此操作时覆盖意外隐藏的实例变量.
这里的诀窍是什么?
我刚刚尝试用Pylint lint一些代码,最后剩下的错误是
R0902: too-many-instance-attributes (8/7)
Run Code Online (Sandbox Code Playgroud)
我理解限制实例属性数量的基本原理,但有七个看起来有点低.我也意识到短号不应该有最后一个字.但是,我想知道我应该做什么,而不是:
def __init__(self, output_file=None, output_dir=None):
"""
Set the frobnicator up, along with default geometries
"""
self.margin = 30
self.pos = [0, 0]
self.sep = [5, 5]
self.cell = [20, 20]
self.frobbr = library.Frobbr()
page = self.frobbr.get_settings('page')
self.lim = [page.get_width() - self.margin,
page.get_height() - self.margin]
self.filename = output_file
self.moddir = output_dir
Run Code Online (Sandbox Code Playgroud)
我应该将几何包装到一个字典中,做一些其他的事情来阻止Pylint抱怨,或者只是忽略它(我真的不想这样做)?
python instance-variables pylint code-readability code-structure
在Rails 3.1中,无法使用诸如<%= @ foo%>之类的语法访问资产js.erb或coffee.erb文件中的控制器实例变量,其中@foo在控制器中设置.那么问题是将控制器变量传递给CoffeeScript或JavaScript资产的最佳方法是什么.
这个问题在论坛上有多种复杂形式的问题,但我再次提出这个问题的意思是要有一个所有建议聚集在一起的地方,并且所提供的代码简单易读.另请注意,我特指的是资产,而不是查看响应文件.
controller ruby-on-rails erb instance-variables coffeescript
我一整天都坐在这里,我已经有点累了所以请原谅我简短.
我是python的新手.
我只是将一个工作程序重写成一个类中的一堆函数,一切都搞砸了.我不知道是不是我,但我很惊讶我找不到关于如何在网上处理课程的初学者教程,所以我有几个问题.
首先,在__init__类的部分我已经声明了一堆变量self.variable=something.
通过self.variable在该函数中使用,我应该能够在类的每个函数中访问/修改这些变量是否正确?换句话说,通过声明self.variable我已经制作了这些变量,类的范围内的全局变量对吗?
如果没有,我该如何处理自我?
其次,如何正确地将参数传递给类?一些示例代码很酷.
第三,如何在类范围之外调用类的函数?一些示例代码很酷.
第四,如何class INITIALCLASS在另一个实例中创建一个实例class OTHERCLASS,将变量传递OTHERCLASS给INITIALCLASS?一些示例代码很酷.
我想用来自OTHERCLASS的参数调用函数INITIALCLASS.到目前为止我所做的是.
class OTHERCLASS():
def __init__(self,variable1,variable2,variable3):
self.variable1=variable1
self.variable2=variable2
self.variable3=variable3
def someotherfunction(self):
something=somecode(using self.variable3)
self.variable2.append(something)
print self.variable2
def somemorefunctions(self):
self.variable2.append(variable1)
class INITIALCLASS():
def __init__(self):
self.variable1=value1
self.variable2=[]
self.variable3=''
self.DoIt=OTHERCLASS(variable1,variable2,variable3)
def somefunction(self):
variable3=Somecode
#tried this
self.DoIt.someotherfunctions()
#and this
DoIt.someotherfunctions()
Run Code Online (Sandbox Code Playgroud)
我显然不明白如何将变量传递给类或如何处理self,何时使用它以及何时不使用.我可能也不明白如何正确创建类的实例.一般来说,我不了解课程的机制,所以请帮助我并向我解释,就像我不知道(我似乎没有,似乎).或者指向一个完整的视频或可读的教程.
我在网上找到的只是一些非常简单的例子,对我没什么帮助.或者只是非常简短的类和类方法实例的定义等.
如果你们想要的话,我可以寄给你原始代码,但它很长.
也许这更像是一个样式问题,而不是技术问题,但我有一个带有几个成员变量的python类,我想让它工作,以便在用户首次创建类的实例时初始化一些成员变量(即在__init__函数中)我希望从稍后将调用的成员函数的参数定义其他成员变量.所以我的问题是我应该初始化函数中的所有成员变量__init__(并将稍后定义的变量设置为虚拟值)或者在__init__函数中初始化一些变量,在稍后的函数中初始化一些变量.我意识到这可能很难理解,所以这里有几个例子.
此示例var3最初在__init__函数中设置为0 ,然后在my_funct函数中设置为所需的值.
class myClass(object):
def __init__(self,var1,var2):
self.var1=var1
self.var2=var2
self.var3=0
def my_funct(self,var3):
self.var3=var3
Run Code Online (Sandbox Code Playgroud)
并且在此示例中,var3没有在所限定的所有__init__功能
class myClass(object):
def __init__(self,var1,var2):
self.var1=var1
self.var2=var2
def my_funct(self,var3):
self.var3=var3
Run Code Online (Sandbox Code Playgroud)
我认为任何一种方式都不会产生很大的不同(可能是内存使用量略有不同).但我想知道其中一个是否因为某些原因而优先于另一个.
我的任务是使用一个应该由用户输入的实例变量String来创建一个程序.但我甚至不知道实例变量是什么.什么是实例变量?我该如何创建一个?它有什么作用?
有没有办法在ruby中使实例变量"私有"(C++或Java定义)?换句话说,我希望以下代码导致错误.
class Base
def initialize()
@x = 10
end
end
class Derived < Base
def x
@x = 20
end
end
d = Derived.new
Run Code Online (Sandbox Code Playgroud) 方法1:
@interface MyController : UIViewController {
UILabel *myText;
}
@property (nonatomic, strong) UILabel *myText;
Run Code Online (Sandbox Code Playgroud)
方法2:
@interface MyController : UIViewController
@property (nonatomic, strong) UILabel *myText;
Run Code Online (Sandbox Code Playgroud)
方法3:
@interface MyController : UIViewController {
UILabel *myText;
}
Run Code Online (Sandbox Code Playgroud)
我读过一些关于这种东西的文章,但我还没有真正意识到我必须采用哪种方法.
我还发现有人说方法1是一种陈旧的方式所以我想知道使用ARC的ios sdk 6的最佳实践.
我知道使用属性声明变量是生成getter和setter的简单方法,有人建议使用它.但是,我想问一个变量不是为了另一个类调用,是否有必要使用属性变量?并在界面内将其设置为私有变量?或者只更改一个仅在界面内声明的变量?我想学习最佳实践,如果这是一个愚蠢的问题,请原谅我.
而且,一些开发人员以这种方式编写@synthesize
@synthesize myText=_myText;
Run Code Online (Sandbox Code Playgroud)
但有些人写道:
@synthesize myText;
Run Code Online (Sandbox Code Playgroud)
我也想知道差异哪一个更好?
非常感谢你!
我在我的类中动态创建了一个实例变量:
class Mine
attr_accessor :some_var
def intialize
@some_var = true
end
def my_number num
self.instance_variable_set "@my_#{num}", num
end
end
Run Code Online (Sandbox Code Playgroud)
我@my_#{num}现在如何制作attr值?
例如,我希望能够这样做:
dude = Mine.new
dude.my_number 1
dude.my_1
=> 1
Run Code Online (Sandbox Code Playgroud) python ×4
objective-c ×2
ruby ×2
attr ×1
call ×1
class ×1
coffeescript ×1
controller ×1
erb ×1
ios ×1
java ×1
oop ×1
private ×1
pylint ×1
visibility ×1