我想在我的项目中为所有UIImageViews添加一些圆角.我已经有了代码工作,但我必须将它应用于每个图像; 我应该继承UIImageView来添加它吗?如果是这样,有人可以给我一些指示如何做到这一点?
这是代码
- (void)viewDidLoad {
[super viewDidLoad];
NSString *mainpath = [[NSBundle mainBundle] bundlePath];
welcomeImageView.image = [UIImage imageWithContentsOfFile:[mainpath stringByAppendingString:@"/test.png"]];
welcomeImageView.layer.cornerRadius = 9.0;
welcomeImageView.layer.masksToBounds = YES;
welcomeImageView.layer.borderColor = [UIColor blackColor].CGColor;
welcomeImageView.layer.borderWidth = 3.0;
CGRect frame = welcomeImageView.frame;
frame.size.width = 100;
frame.size.height = 100;
welcomeImageView.frame = frame;
}
Run Code Online (Sandbox Code Playgroud) 假设我有一个名为的基类Entity.在那个类中,我有一个静态方法来检索类名:
class Entity {
public static String getClass() {
return Entity.class.getClass();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有另一个类扩展.
class User extends Entity {
}
Run Code Online (Sandbox Code Playgroud)
我想获得User的类名:
System.out.println(User.getClass());
Run Code Online (Sandbox Code Playgroud)
我的目标是看到"com.packagename.User"输出到控制台,但是我将最终得到"com.packagename.Entity",因为Entity类是直接从静态方法引用的.
如果这不是一个静态方法,可以通过this在Entity类中使用关键字(即:)来轻松解决return this.class.getClass().但是,我需要这种方法保持静态.有关如何处理此问题的任何建议?
在Android应用程序测试套件中,我有一个这样的类,其中B是一个视图:
public class A extends B {
... etc...
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个可能包含A对象的视图对象列表,但在这种情况下我只关心它们是子类还是"实例" B.我想做点什么:
ArrayList<View> viewList = getViews();
Iterator<View> iterator = viewList.iterator();
while (iterator.hasNext() && viewList != null) {
View view = iterator.next();
if (view.getClass().isInstance(B.class)) {
// this is an instance of B
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当if遇到一个A对象时,它不会评估为"实例B".有办法做isSubclassOf什么吗?
我正在考虑使用typeid()但我不知道如何询问该类型是否是另一个类的子类(顺便说一下,它是抽象的)
在插槽上的Python数据模型参考部分中,有一个使用说明列表__slots__.我对第1和第6项完全感到困惑,因为它们似乎相互矛盾.
第一项:
__slots__的__dict__属性将始终可访问,因此__slots__
子类中的定义毫无意义.第六项:
__slots__
声明限制为定义它的类.因此,子类将具有一个,__dict__
除非它们也定义__slots__
(它必须只包含任何其他槽的名称).在我看来,这些项目可以更好地措辞或通过代码显示,但我一直试图绕过这个,我仍然感到困惑.我不明白怎么__slots__都应该被使用,而我试图让他们的工作更好地把握.
问题:
有人可以用简单的语言向我解释在子类化时继承槽的条件是什么?
(简单的代码示例会有所帮助,但不是必需的.)
我有一个由外部库提供给我的课程.我已经创建了这个类的子类.我也有一个原始类的实例.
我现在想要将此实例转换为我的子类的实例,而不更改实例已有的任何属性(除了我的子类覆盖的那些属性).
以下解决方案似乎有效.
# This class comes from an external library. I don't (want) to control
# it, and I want to be open to changes that get made to the class
# by the library provider.
class Programmer(object):
def __init__(self,name):
self._name = name
def greet(self):
print "Hi, my name is %s." % self._name
def hard_work(self):
print "The garbage collector will take care of everything."
# This is my subclass.
class C_Programmer(Programmer):
def __init__(self, *args, **kwargs):
super(C_Programmer,self).__init__(*args, **kwargs)
self.learn_C()
def …Run Code Online (Sandbox Code Playgroud) 请考虑以下代码:
struct A
{
void f()
{
}
};
struct B1 : A
{
};
struct B2 : A
{
};
struct C : B1, B2
{
void f() // works
{
B1::f();
}
//using B1::f; // does not work
//using B1::A::f; // does not work as well
};
int main()
{
C c;
c.f();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我恳请你不要复制粘贴标准答案如何解决钻石问题("使用虚拟继承").我在这里问的是为什么在这种情况下使用声明不起作用.确切的编译器错误是:
In function 'int main()':
prog.cpp:31:6: error: 'A' is an ambiguous base of 'C'
c.f();
Run Code Online (Sandbox Code Playgroud)
我得到的印象是使用声明应该从这个例子开始:
struct A
{
void f()
{ …Run Code Online (Sandbox Code Playgroud) 以下代码有效:
class Foo(tuple):
def __init__(self, b):
super(Foo, self).__init__(tuple(b))
if __name__ == '__main__':
print Foo([3, 4])
$ python play.py
Run Code Online (Sandbox Code Playgroud)
结果:
play.py:4: DeprecationWarning: object.__init__() takes no parameters
super(Foo, self).__init__(tuple(b))
(3, 4)
Run Code Online (Sandbox Code Playgroud)
但不是以下内容:
class Foo(tuple):
def __init__(self, a, b):
super(Foo, self).__init__(tuple(b))
if __name__ == '__main__':
print Foo(None, [3, 4])
$ python play.py
Run Code Online (Sandbox Code Playgroud)
结果:
Traceback (most recent call last):
File "play.py", line 7, in <module>
print Foo(None, [3, 4])
TypeError: tuple() takes at most 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)
为什么?
我有兴趣在intPython 中继承内置类型(我使用的是2.5版),但是在初始化工作时遇到了一些麻烦.
这是一些示例代码,应该是相当明显的.
class TestClass(int):
def __init__(self):
int.__init__(self, 5)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用它时,我得到:
>>> a = TestClass()
>>> a
0
Run Code Online (Sandbox Code Playgroud)
在哪里我期待结果5.
我究竟做错了什么?到目前为止,谷歌并没有太大的帮助,但我不确定我应该寻找什么
subclass ×10
inheritance ×4
python ×4
c++ ×2
class ×2
java ×2
code-reuse ×1
instanceof ×1
ios ×1
perl ×1
pragma ×1
python-2.5 ×1
slots ×1
super ×1
superclass ×1
tuples ×1